我的网站上有大表格,并使用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);
}
答案 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");