在jQuery中使用$ .ajax时,如何在加载的文档中故意抛出错误?

时间:2010-02-06 11:47:25

标签: jquery ajax verification

在我的文档中,我有这个脚本:

$.ajax({ type:"POST",url:"ajax.php",data:data,
    success: function() { 
        //onsuccess
    },
    error: function() { 
        //onerror
    }
}); 

我如何在文档ajax.php中故意抛出错误?仅仅抛出一个400 HTTP状态代码或其他东西就足够了吗? (如果是,那么正确的是400吗?)

为什么我要问的是我想用它来向服务器提交表单,如果字段没有正确填写,我想通过$.ajax中的错误参数提醒用户。我知道我可以首先使用javascript做这个,但我希望我能这样做(所以我不必写两次验证)。 但当然,通过这种方式,我无法将不同的字段与其他字段分开。

根据我想要使用的内容,可以以某种方式抛出“自定义错误”,因此如果字段name未正确填写,则会返回字段的名称(即name)。做这样的事情就足够了:

在ajax.php中:

if (isFilledOutProperly($name) == false) {
    echo "name";
}
else {
    echo "success";
}

并且:

success: function(data) { 
    if (data == 'name') {
        //error
    }
            else {
        //success
    }
},

我可能在这里走错了路,但如果有人对如何做到这一点有更好的建议,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:12)

error来电的$.ajax()条款并非真正针对您所指的情况。 error涵盖了HTTP错误的案例。在这种情况下,验证失败不是真正的错误。最好在success回调中指出那些从服务器返回的适当数据。

如果你看documentation

error(XMLHttpRequest, textStatus, errorThrown)Function
     

请求时要调用的函数   失败。该功能通过三次   arguments:XMLHttpRequest对象,   描述错误类型的字符串   发生了并且是可选的   异常对象,如果发生了一个。   第二个可能的值   参数(除了null)是“超时”,   “错误”,“未修改”和   “parsererror”。这是Ajax Event

注意:它所讨论的错误条件是解析错误,超时,错误(HTTP)和未修改(这是另一个HTTP响应)。

从技术上讲,您的请求成功但验证失败,这本身并不是错误。