response.statusText =“OK”但是使用jQuery从ajax进入错误回调

时间:2009-09-12 03:40:38

标签: jquery ajax

服务器端:

 ....
    $_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');
    }
});

我已经测试过它在'返回'时就停止了 在什么条件下不会调用成功函数?

修改

添加错误回调后,它被捕获,但尚未输出有用的信息:

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

仅输出:

[object XMLHttpRequest]  
OK

为什么会出现错误回调?

6 个答案:

答案 0 :(得分:3)

指定URL option

可能是个好主意
$.ajax(
{
    url:'foo.php',
    type:'POST',
    ...

答案 1 :(得分:3)

错误回调还有更多有用的参数。尝试获取textStatus。

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

检查那是什么。

快速猜测您打算使用dataType: 'text'而不是'text/plain'。 (Check documentation

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

答案 2 :(得分:1)

尝试从服务器端代码中省略return语句。就错误回调而言,使用以下通用ajax回调代码,让我们知道失败时状态,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);
    }
  }
}

答案 3 :(得分:0)

你忘记了吗?

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

在服务器上?

答案 4 :(得分:0)

1)转到浏览器中的网址(使用ajax获取的网址)

2)为jquery ajax请求设置错误回调。

答案 5 :(得分:0)

在你的php代码中,使用json_encode返回响应

例如:

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

然后在你的ajax成功函数中它应该是

if (response.success == 1) { alert('success'); }