在ajax错误上执行javascript函数

时间:2013-11-17 18:13:14

标签: javascript jquery ajax

我使用以下ajax函数来调用webservice,如果我收到错误,我希望它能触发一个javascript函数userCreate()

$.ajax({
    type:"POST",
    beforeSend: function (request) {
        request.setRequestHeader("X-DreamFactory-Application-Name", "snapcentral");
        request.setRequestHeader("X-DreamFactory-Session-Token", sessID.dream);
    },
    url: url,
    data: '{"username":"' + userStats.loginID + '","lithid":"' + userStats.userID + '"}',
    success: function(data) {
        dbData = data;
        console.log('createUsers Executed sucessfully');
    },
    error: function (request, status, error) {
        console.log("createUser: " + request.responseText);
        createUser();
    }
});

除了不触发createUser()函数的“错误”部分之外,一切都按预期工作。我从根本上做了什么错误,如何让查询在出错时执行函数。

如果我单独调用,我为createUser编写的函数就可以运行。

非常欢迎提供建议和/或指导 - 谢谢。

2 个答案:

答案 0 :(得分:0)

仅当服务器响应错误代码或根本没有响应时,才会调用jQuery的error回调。如果您使用200回复并在回复中收到错误消息,则会调用success回调。可悲的是,jQuery并不那么聪明。

相反,如果出现错误消息,您可以返回错误代码或检入success回调。

答案 1 :(得分:0)

与提到的@SomeKittens一样,error仅在服务器响应错误代码或根本不回复时被调用。

但是,如果出现问题,您可以在服务器端返回一些内容,例如表单验证不成功,用户需要更正某些内容。

例如:

if($_POST['first_last'] === ""){
echo "Name is not right here.";
return false;
}

然后,您可以使用jQuery上的success来处理:

success: function(data) {
  if(data == "Name is not right here."){
    alert(data);
    return false;
  }
  else{
  // do stuff
  }
 }