У меня есть следующий вызов AJAX в методе React:
handleActivitySubmit: function handleActivitySubmit(activity, urlActivity, callbackMy) {
console.log("making query with activity: " + JSON.stringify(activity));
$.ajax({
url: urlActivity,
dataType: 'json',
type: 'GET',
data: activity,
success: function (data) {
callbackMy(Object.keys(data));
}.bind(this),
error: function (xhr, status, err) {
console.error(urlActivity, status, err.toString());
}.bind(this)
});
},
Всякий раз, когда вызов не выполняется, вся страница перезагружается, и все состояние теряется.
Почему это так?
Ваша форма HTML должна отправить форму в action = url
. Это метод по умолчанию, в котором обрабатываются формы, т.е. Если вы нажмете элемент <input type="submit"../>
он всегда перезагрузит браузер. Вам нужно будет использовать event.preventDefault()
в вашем обработчике, чтобы предотвратить действие по умолчанию.
Получить событие click в форме submit в качестве последнего аргумента handleActivitySubmit
т. handleActivitySubmit
handleActivitySubmit: function handleActivitySubmit(activity, urlActivity, callbackMy, event) {
event.preventDefault();
// your remaining code
}