Как мога да реша проблема с пренасочване 302 към 200, вероятно причината е от самият JS?

C++ JAVA
Post Reply
User avatar
Ticketa
Турист
Турист
Posts: 594
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 24
Location: in /root
Contact:

Как мога да реша проблема с пренасочване 302 към 200, вероятно причината е от самият JS?

Post by Ticketa » Tue Dec 29, 2020 10:07 am

Използвам form , която публикува коментари. Тя е кратка с полета Име, Мейл и коментар. Когато обаче сайта е отворен, чрез друг език например от Немски е отворен на Английски website.com - Duith version, website.com/en/ - english version. Получавам проблем и формата дава грешка: "An error occurred while processing the form"

След като дебъгнах се оказа, че има някакъв "redirect" от 302 към 200, как мога да реша проблема с това пренасочване и да не се получава повече този проблем?
POST - https://website.com/?do=comments
Status - 302 Found

GET - https://website.com/en/?do=comments
Status - 200 OK

Това е моят HTML

Code: Select all

			<form action="/?do=comments" method="post" id="f5feafacf21681" class="b-comment_form" data-ajax="true">
				<div class="form-group form-group-25">
					<div class="form">
						<label class="required">Name:</label>
						<input type="text" name="name" required autocomplete="name" />
					</div>
					<div class="form">
						<label class="required">E-mail:</label>
						<input type="text" name="email" placeholder="E-mail" required autocomplete="email" />
					</div>
				</div>
				<div class="form">
					<textarea name="text" rows="5" placeholder="Comment" required></textarea>
				</div>
				<div class="form">
					<input type="hidden" name="action" value="add" />
					<input type="hidden" name="module" value="news" />
					<input type="hidden" name="module_id" value="10707" />
					<button type="submit" class="btn btn-primary submit">Save</button>
				</div>
			</form>

Това е моят JS

Code: Select all

// Class for submitting forms
var Form = function() {
	this.init();
};
Form.prototype = {
	init: function() {
		var _this = this;

		$(document).on('submit', 'form[data-ajax]', function(e) {
			e.preventDefault();
			if ( ! $(this).hasClass('form-loading') ) {
				_this.submit( $(this).attr('id') );
			}
		});
	},
	submit: function(form_id, callback) {
		if ( ! form_id ) form_id = 'form';
		var form = $('#' + form_id), url = form.attr('action'), btn = form.find('*[type="submit"]');
		
		if ( form.attr('enctype') == 'multipart/form-data' ) {
			var str = new FormData(form[0]),
				multipart = true;
			str.append('form_id', form_id);
			str.append('utm_url', this_url);
			str.append('utm_title', this_title);
		} else {
			var str = form.serialize() + '&form_id=' + form_id + '&utm_url=' + this_url + '&utm_title=' + this_title,
				multipart = false;
		}
		
		$.ajax({
			url: url,
			type: 'POST',
			data: str,
			dataType: 'json',
			contentType: ( multipart ) ? false : 'application/x-www-form-urlencoded; charset=UTF-8',
			processData: ( multipart ) ? false : true,
			beforeSend: function() {
				form.addClass('form-loading');
				btn.addClass('process');
			},
			success: function(data) {
				if ( data == 'error' ) return false;

				if ( callback && typeof(callback) === "function" ) {
					callback(form_id, data);
				} else {
					if ( data.answer == 'stop' ) {
						error( data.error );
					} else {
						if ( data.success ) success( data.success );
					}
					if ( data.eval ) eval( data.eval );
				}
			},
			error: function() {
				error( 'An error occurred while processing the form' );
			},
			complete: function() {
				form.removeClass('form-loading');
				btn.removeClass('process');
				if ( form.find('#captcha') ) reload();
			}
		});
	}
}, $(document).ready(function() {
    Form = new Form
});

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 919
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 65

Re: Как мога да реша проблема с пренасочване 302 към 200, вероятно причината е от самият JS?

Post by Revelation » Sun Jan 17, 2021 12:57 am

Ако си успял да решиш проблема, по-добре покажи как го реши вместо да изискваш триене на темата.

Post Reply