jQuery验证submitHandler不显示响应

时间:2014-04-01 18:37:06

标签: php jquery json

我有一个jQuery验证脚本,它与事件处理程序除外。我已将此帖子简化为故障排除目的。

的jQuery

submitHandler: function (form) {
                $.ajax({
                    type: $(form).attr("method"),
                    url: $(form).attr("action"),
                    data: $(form).serialize(),
                    dataType : "json"
                })
                .done(function (data) {
                    if (data.resp > 0 ) {
                        alert(data.message);                       
                    }
                });
                return false; // required to block normal submit since you used ajax
            },
 // rest of the validation below, truncated for clarity

submitHandler成功发布到我的PHP脚本,该脚本将用户添加到数据库,然后回显json_encode()结果。

PHP

<?php
    // All processing code above this line has been truncated for brevity

    if($rows == "1"){
        $resp = array("resp"=>1, "message"=>"Account created successfully. Waiting for user activation.");
    }else{
        $resp = array("resp"=>2, "message"=>"User account already exists.");
    }

    echo json_encode($resp);
?>

正如您所看到的,这个想法很简单。使用正确的响应消息提醒用户。当我运行脚本时,用户帐户已成功添加到数据库,但没有向用户显示警报。 Chrome中的控制台显示没有错误,我缺少什么?

3 个答案:

答案 0 :(得分:1)

done()中的data变量是一个字符串。你必须将它转换为像这样的对象

var response = $.parseJSON(data);

以访问属性

答案 1 :(得分:0)

对不起,我在之前的回答中错过了dataType : "json"代码 无论如何我尝试了你的代码并且它正在运行。 alert显示消息。我认为你在其他地方有错误。我认为它与你编码为json的数组(PHP部分)有一些关系。你得到的回答并不完整。尝试调试PHP并与AJAX分开测试页面,看看结果是什么

答案 2 :(得分:0)

经过一些修补,我能够按照我想要的方式工作。这是更新后的代码。

<强>的jQuery

.done(function (data) {
$("#user_add_dialog").dialog({
    autoOpen: false,
    modal: true,
    close: function (event, ui) {
    },
    title: "Add User",
    resizable: false,
    width: 500,
    height: "auto"
});
$("#user_add_dialog").html(data.message);
$("#user_add_dialog").dialog("open");
});

return false; // required to block normal submit since you used ajax

<强> PHP

<?php
    // All processing code above this line has been truncated for brevity

    if($rows == "1"){
        $resp = array("message"=>"Account created successfully. Waiting for user activation.");
    }else{
        $resp = array("message"=>"User account already exists.");
    }

    echo json_encode($resp);
?>