当我调试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).");";
答案 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
没有任何关系。