jquery ajax json没有返回true

时间:2011-07-30 16:19:01

标签: javascript jquery ajax

我的网站上有大表格,并使用serialize()来处理表单。

我的问题是:
表单完成后,结果总是返回false !我用萤火虫检查了一下。如果为false,则显示结果。实际上是 data.ok == true 已被调用,但它没有显示页面中的消息?它没有将页面重定向到目标地址?

jquery ajax:

$("#details").live("submit", function(e){
   var form = $(this).serialize();
   var data_string = form;
   $.ajax({
            type: "post",
            url: "../_include/ajax.php?details",
            cache: false,
            data: data_string,
            dataType: "json",
            success: function(data) {
                if(data.ok) {
                    ("#pop").html(data.message).addClass("oke").fadeIn("slow");
                    setInterval(function() {
                        location.href = data.redirect
                    },2000)

                } else {
                    $("#pop").html(data.message).addClass("warning").fadeIn("slow");
                }

            }
        });

        e.preventDefault();
})
PHP中的

if (isset($_GET['details'])) {

    if (empty($name)) {
            $data['ok'] = false;
            $data['message'] = 'Please enter name!';
    } ................ {
            .............
    } else {
      $db->query("UPDATE query....");
      $data['ok'] = true;
      $data['message'] = 'Your details has been submitted!';
      $data['redirect'] = 'index.php?p=details';
    }


echo json_encode($data);
}

2 个答案:

答案 0 :(得分:2)

您在PHP(if (isset($_GET['details'])))中检查GET,但是在您的AJAX中发送POST(通过将type指定为post)。

检查$_POST数组而不是$_GET,或将类型更改为get

答案 1 :(得分:2)

您的成功函数中似乎有语法错误(如果这不是复制/粘贴错误):

("#pop").html(data.message).addClass("oke").fadeIn("slow");

应该是:

$("#pop").html(data.message).addClass("oke").fadeIn("slow");