Запрос на удаление Ajax возвращает 200, но вместо успеха выдается ошибкаJquery

Программирование на jquery
Ответить
Гость
 Запрос на удаление Ajax возвращает 200, но вместо успеха выдается ошибка

Сообщение Гость »

Привет, мне не удается понять, где я ошибся, поскольку функция удаления работает хорошо, однако ошибка возникла, хотя ответ JSON возвращает успех.

Код: Выделить всё

$(document).on('click', '.remove-btn', function() {
var id = $(this).data('id');
var confirmDelete = confirm("Are you sure you want to remove this User");

formData = {
'form_process' : 'Remove User',
'id' : id,
}

if (confirmDelete) {
$.ajax({
type    : 'POST',
url     : 'library/page/process/remove_user.php',
data    : formData,
dataType: 'json',
beforeSend: function(){
window.scrollTo(0, 0);
$("#loading-overlay").show();
},
success : function(data) {
$("#loading-overlay").hide();
if (!data.success) {
danger ('Process Error', data.errors)
} else {
success ('Success', 'User has been removed successfully.');

setTimeout(function() {
window.location.href = window.parent.CloseDialog();
}, 3000);
}
},
error : function (xhr, ajaxOptions, thrownError) {
$("#loading-overlay").hide();
danger ('Process Error', "There is unknown error occurs. Please contact administrator for system verification")
console.log(xhr.status);
console.log(xhr.responseText);
console.log(thrownError);
console.log('There is unknown error occurs. Please contact administrator for system verification');
}
});
}
})
А ниже приведен код remove_user.php

Код: Выделить всё

if($_POST['form_process'] == 'Remove User') {

$training_info = $c_eta->_get_user_info($_POST['id']);

if (count($training_info) > 0) {
if ($c_eta->_remove_user($_POST['id'])) {
$form_data['success'] = true;
} else {
$form_data['success'] = false;
$form_data['errors'] = "Unable to remove user";
}
echo json_encode($form_data);
return;
}
}
Ответ в формате JSON

Код: Выделить всё

{"success":true}
Пользователь удален, но я продолжаю получать сообщение «Ошибка процесса», «Произошла неизвестная ошибка. Пожалуйста, свяжитесь с администратором для проверки системы"..
Я попробовал добавить заголовок('Content-Type: application/json'); перед echo json_encode($form_data) ; как предложено в одном из сообщений здесь, однако это не работает.
ОБНОВЛЕНИЕ:
Ниже приведены значения журнала. которое отображалось на вкладке консоли браузера:

xhr.status = 200


xhr.responseText = 49{"success":true


thrownError = SyntaxError: Неожиданный символ без пробелов после JSON в позиции 4 (строка 2, столбец 3)

Я не уверен, где я ошибся в синтаксической ошибке, но если Я изменил тип данных: text он будет здесь:

Код: Выделить всё

if (!data.success) {
danger ('Process Error', data.errors)
}
с сообщением «Ошибка процесса», «Не определено».
ОБНОВЛЕНИЕ 2.0:
Я решил, что проблема связана с таблицей данных, в которой находится кнопка удаления. На основании ошибки xhr.responseText = 49{"success":true, упомянутой выше, 49 — это идентификатор данных, которые необходимо удалить. Он добавился к ответу json. Ниже приведен код моей кнопки удаления:

Код: Выделить всё

array(
'db' => 'id',
'dt' => 5,
'tbl_field' => 'eta.id',
'formatter' => function($d, $row) {
$id = $d;
$remove = '' .
'
[img]assets/img/delete.png[/img]
';
return $remove;
})

Предполагая, что возврат кнопки $remove приводит к добавлению идентификатора в ответ json, я также попытался изменить свой код следующим образом:

Код: Выделить всё

userDatatable.on('draw.dt', function() {
$('#user_datatable').find('.remove-btn').remove();
$('#user_datatable').find('tbody tr').each(function() {
var id = $(this).find('td:eq(5)').text();  //row id
var buttonHtml = '
[img]assets/img/delete.png[/img]
';
$(this).find('td:eq(5)').html(buttonHtml);
});
Однако идентификатор по-прежнему включен в ответ. Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/782 ... of-success
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»