Функция не работает после ответа php - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть ajax-запрос, отправляющий некоторые данные в php-файл:

Ext.Ajax.request({ 
    url: 'update.php', 
    method: 'POST',
    success: function (){ alert("saved"); },
    failure: function (){ alert("not saved"); },
    params: { data: someData }
})

и update.php, который имеет только две строки:

<?php
    $res = array('success' => false);
    echo json_encode($res);
?> 

Функция успеха всегда выполняется. В чем может быть проблема?

Ответы [ 3 ]

4 голосов
/ 25 февраля 2011

Для меня сбой функции должен вызываться при возникновении проблемы с запросом. например Если сервер не работает или страница update.php больше не существует.

2 голосов
/ 25 февраля 2011

success вызывается при успешном выполнении запроса. Данные, с которыми вы отвечаете, не имеют значения.

Обратный вызов error вызывается при сбое запроса. Это не сбой, поэтому обратный вызов не вызывается.

Анализировать результирующие данные в обратном вызове успеха, чтобы посмотреть на логику уровня приложения:

Ext.Ajax.request({ 
    url: 'update.php', 
    method: 'POST',
    success: function (data){ alert(data.success ? "saved" : "not saved"); },
    failure: function (){ alert("request failed"); },
    params: { data: someData }
});

Я предположил, что success может принимать параметр с содержимым ответа; проверьте документацию на Ext, чтобы узнать.

2 голосов
/ 25 февраля 2011

Ext.Ajax.success выполняется, потому что запрос AJAX был успешным.Если вы переименуете или удалите update.php, он выполнит .failure, потому что получает 404.
Вы должны проверить ответ в .success или заставить update.php вернуть 404.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...