Исключение: исключение из памяти в процессе Ajax
У меня возникла проблема. Я представляю простую форму с небольшими данными, и когда я проверил вкладку console
, URL-адрес ajax, похоже, работает, но после обработки ajax он будет предупреждать об ошибке, и это перенаправлен на мою домашнюю страницу и с вкладки консоли, у меня есть это weird error
:
Неотключенное исключение: вне памяти
В моем ajax у меня есть только этот простой код:
$("#add-comment").on('click', function() {
var id = $('input[name=\'review_id\']').val();
var customer_id = $('input[name=\'customer_id\']').val();
var $comment = $('textarea[name=\'user_comment\']').val();
var sample = "test";
$.ajax({
url: 'index.php?route=product/product/writeSubComment',
type: 'post',
dataType: 'json',
data: { text: sample },
beforeSend: function() {
},
success: function(data) {
console.log(data.test);
},
error: function() {
alert('ERROR!!!');
}
});
});
В моем PHP-контроллере у меня есть эта функция
public function writeSubComment() {
$json = array();
$json['test'] = $this->request->post['text'];
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}
Ответы
Ответ 1
Из вашего описания перенаправления на главную страницу, но без кода в ваших разделах ответа ajax для этого, я подозреваю, что элемент # add-comment - это кнопка отправки в вашей форме.
Если это так, то ваша форма может быть отправлена одновременно с запуском ajax-кода при нажатии кнопки # add-comment submit. Это объясняет ошибку вне памяти, поскольку javascript ajax будет удален во время перенаправления страницы.
Вам нужно будет запретить отправку вашей формы и позволить разделам success() или отказам выполнить следующий шаг (например, обновить страницу, обновив окно комментариев). Один из способов сделать это - изменить
$("#add-comment").on('click', function() {
...
к
$('#add-comment').on('click', function(event){
event.preventDefault();
...
или измените кнопку отправки с
<button type="submit" ...>Add comment</button>
к
<button type="button" ...>Add comment</button>
или измените тег формы следующим образом
<form onsubmit="return false;">
Это мое лучшее предположение из имеющейся у меня информации.
Ответ 2
У меня была аналогичная проблема при тестировании в Firefox. Смена кнопки type
от submit
до button
работала для меня.
<button type="submit" ...>Add comment</button>
к
<button type="button" ...>Add comment</button>
Ответ 3
У меня была эта ошибка при реализации поиска через Ajax, когда я попытался отобразить результат в HTML DOM и решил проблему следующим образом:
$('..a place where the processed output Ajax request..').on('click', '#add-comment', function() {...});
Ответ 4
моя проблема решена путем изменения
<button onClick="save_order_info_into_database()">Save</button>
в
<button type="button" onClick="save_order_info_into_database()">Save</button>
означает добавление type="button"
разрешенного моего..