response.statusText = "OK", но попадает в функцию обратного вызова с ошибкой из ajax с jQuery - PullRequest
4 голосов
/ 12 сентября 2009

Серверная сторона:

 ....
    $_SESSION['accountId'] = $accountId;
    $_SESSION['type'] = $_POST['accountType'];
    echo '1';
    return;

Клиентская сторона:

$.ajax(
{
    type:'POST',
    data: $("#flowFormSubmit").serialize(),
    dataType:'text/plain',
    timeout:1000,
    success:function(response){
        if(-1 == response)
            alert('fail');
        else
            alert('succeed');
    }
});

Я проверял, что он останавливается прямо при 'возврате'; При каких условиях функция успеха не будет вызываться?

EDIT

после добавления обратного вызова с ошибкой перехватывается, но пока не выдает полезной информации:

error:function(response){ alert(response);alert(response.statusText); },

Выводит только:

[object XMLHttpRequest]  
OK

Почему происходит ошибка при обратном вызове?

Ответы [ 6 ]

3 голосов
/ 12 сентября 2009

Есть более полезные параметры для обратного вызова ошибки. Попробуйте получить textStatus.

error: function(XHR, textStatus, errorThrown) { console.log(textStatus); } 

Проверьте, что это.

Быстрое предположение, что вы хотели использовать dataType: 'text' не 'text/plain' ( Проверьте документацию )

$.ajax({
    type:'POST',
    data: $("#flowFormSubmit").serialize(),
    dataType:'text',
    timeout:1000,
    success:function(response){
        if(-1 == response)
                alert('fail');
        else
                alert('succeed');
    }
});
3 голосов
/ 12 сентября 2009

Было бы неплохо указать опцию URL :

$.ajax(
{
    url:'foo.php',
    type:'POST',
    ...
1 голос
/ 12 сентября 2009

Попробуйте опустить оператор возврата из серверного кода. Что касается вашего обратного вызова с ошибкой, используйте следующий общий код обратного вызова ajax и сообщите нам, каковы свойства status, responseText и statusText, когда это не удается:

function callback(response)
{
  if (response.readyState == 4) 
  {
    if (response.status == 200) 
    {
      alert("Response Success:\n" + response.responseText);
    }
    else
    {
      alert("Response Error:\n" + response.statusText);
    }
  }
}
0 голосов
/ 12 сентября 2009

в вашем php-коде, используйте json_encode для возврата ответа

например:

$response = array('success'=>1);
echo json_encode($response);

тогда в вашей функции успеха ajax должно быть

if (response.success == 1) { alert('success'); }
0 голосов
/ 12 сентября 2009

1) перейдите по URL в вашем браузере (тот, который вы получаете с помощью ajax)

2) установить обратный вызов ошибки для jjery ajax-запроса.

0 голосов
/ 12 сентября 2009

ты забыл:

header('Content-Type:text/plain');

на сервере?

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