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

Eik*_*ern 14 ajax verification jquery

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

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

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

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

基于我想要使用它,我可以以某种方式抛出"自定义错误",因此如果该字段name没有正确填写,它将返回该字段的名称(即name).做这样的事情就足够了:

在ajax.php中:

if (isFilledOutProperly($name) == false) {
    echo "name";
}
else {
    echo "success";
}
Run Code Online (Sandbox Code Playgroud)

和:

success: function(data) { 
    if (data == 'name') {
        //error
    }
            else {
        //success
    }
},
Run Code Online (Sandbox Code Playgroud)

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

cle*_*tus 12

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

如果你看一下文档:

error(XMLHttpRequest, textStatus, errorThrown)Function
Run Code Online (Sandbox Code Playgroud)

请求失败时要调用的函数.该函数传递三个参数:XMLHttpRequest对象,描述发生的错误类型的字符串和可选的异常对象(如果发生).第二个参数的可能值(除了null)是"timeout","error","notmodified"和"parsererror".这是一个Ajax事件.

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

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

  • 根据REST原则,使用HTTP 200响应POST请求意味着资源已成功创建.您可以使用HTTP 400进行响应,并以text/html/json/xml格式提供有关错误的详细信息. (3认同)