关于php:ajaxsubmit错误捕获

ajaxSubmit error capturing

我无法让AjaxSubmit捕获错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$(document).ready(function(){

        $("#supportForm").validate({
              rules: {
                 //validation
              },

              messages: {              
                 //messages
              },

              submitHandler: function(form) {
                    $(form).ajaxSubmit({
                        url:"ajax/supportform",
                        type:"GET",
                        dataType: 'json',
                        error: function() { alert('error'); },
                        success: function() {alert('success'); },


                    });
              }

        });  
    })

我必须在php脚本中返回什么才能触发错误事件?

我尝试返回一个错误大于0的数组,exit(json_encode('error'=>'0');等等。


见Mike de Klerk的链接,它提供了陷阱错误必须做什么的线索:

似乎成功&错误回调与传递布尔错误/成功消息无关,但仅当成功调用了URL时。我希望我不会得到错误结果,因为我使用的CMS总是返回某种内容——即使它是404或403页。

无论如何,我必须从PHP脚本返回一个JSON字符串:

1
2
3
4
5
6
<?php


$response = json_encode(array("error" =>"false","message" =>"this is the error message"));

return $response;

然后在我的成功回调中分析它:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
submitHandler: function(form) {
        $(form).ajaxSubmit({
            url:"ajax/supportform",
            type:"POST",
            dataType: 'json',

            error: function(data ) { alert(data); },

            success: function(response) {

            var obj = jQuery.parseJSON(response);

            if(obj.error =="true"){
                alert('error is true');
            }else{
                alert('error is false')
            }

            },


        });
  }

编辑:要显示来自PHP的某些特定错误描述,您应该阅读以下问题:jquery ajax错误处理,显示自定义异常消息

让您的服务器产生一些错误,使用PHP,您可以这样做

1
2
3
<?php
header("HTTP/1.0 404 Not Found");
?>

查看header函数的文档:http://nl.php.net/manual/en/function.header.php

您在这里所做的是为您的WebBrowser提供不属于典型HTML源代码的数据,通过这些数据,WebBrowser可以知道发生了什么错误。

实际上,您可以将所有需要的元数据添加到网页请求的头中,但是当WebBrowser不知道这意味着什么时,它将被忽略。请参阅以下定义或状态代码:http://www.w3.org/protocols/rfc2616/rfc2616-sec10.html


将URL更改为不存在的内容以强制出错

1
2
3
4
5
6
7
8
9
          function(form) {
                $(form).ajaxSubmit({
                    url:"ajax/supportform001",
                    type:"GET",
                    dataType: 'json',
                    error: function() { alert('error'); },
                    success: function() {alert('success');} // <-was an extra comma
                });
          }