这个Ajax适用于调试(Firebug),但不是没有它

时间:2012-08-14 02:37:11

标签: php javascript jquery ajax

当我调试Firebug中的代码时,它工作正常 - 它在我的数据库中插入记录并重定向到URL。但它不起作用。当我不使用调试器时,它给出了一个错误alert('error')。为什么? val是一个序列化数组,

$('#target').submit(function() {
    if (validation == true) {
        $.ajax({
            type: "POST",
            url: "some url",
            dataType: "jsonp",
            data: val,
            success: function(data, textStatus) {
                alert('success');
            },
            error: function(data) {
                alert("error");
            }
        });
    }
    else {
        return false;
    }
});​

//PHP Code
$return['url']= "/index.php?action=jobSeeker/jobSeekerRegistrationConfirmation";
echo $_GET['callback']."(".json_encode($return).");";

2 个答案:

答案 0 :(得分:2)

您说当行为正确时,您会将用户定向到新的网址。如果是这种情况,在JS成功通话有机会执行之前,这可能是您的表单提交和重定向到新页面的问题吗?

如果你改变了

$('#target').submit(function() {

$('#target').submit(function(e) {
    e.preventDefault();

你的$ .ajax成功回调应该运行,然后你需要在JS的帮助下继续URL重定向。

答案 1 :(得分:0)

我认为你的问题是这个,

您正在使用POST发出ajax请求,但是在php

echo $_GET['callback']."(".json_encode($return).");";

正在寻找$_GET,因此响应将不是有效的jsonp格式的响应。虽然执行会更新数据库。这是获得错误的原因。 重定向也将成功,因为它与ajax success没有任何关系。