我正在设计一些PHP页面来处理表单。在这些页面中,我想在结果成功时重定向,或者在出现错误时打印消息。页面结构如下:
$arg = $_POST["arg"];
if (isset($arg)) {
if (function($arg)) {
header ("Location: page2.php");
}
else {
echo "Response was not successfully";
}
}
else {
echo "$arg parameter was not defined";
}
当我需要打印消息时,我使用cftoast for JQuery(http://www.jqueryscript.net/other/Android-Style-jQuery-Toaster-Messages-Plugin-cftoaster.html) 要处理所有表单我正在使用此Javascript函数:
$(document).ready(function() {
$("#asynchronousForm").submit(function() {
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
success: function(data) {
$("body").cftoaster({content: data});
window.location.href = ""; //Refresh page to clear possible errors
}
})
return false;
});
我的问题是,当表单重定向时,有时会出现没有重定向的问题,并显示空的吐司,刷新页面和重复的输入字段......如何解决这个问题?我使用JQueryMobile作为我网页的骨架。
答案 0 :(得分:1)
处理AJAX响应的一个好方法是使用JSON。 它允许您发送多个数据并根据AJAX结果执行重定向或显示消息。
在PHP中,您可以使用json_encode()
将数组转换为JSON。
$arg = $_POST["arg"];
if (isset($arg)) {
if (function($arg)) {
exit(json_encode(array('redirect' => 'page2.php')));
}
else {
exit(json_encode(array('message' => 'Response was not successfully')));
}
}
else {
exit(json_encode(array('message' => $arg.' parameter was not defined')));
}
AJAX:
您只需添加dataType: 'json'
即可。
您也可以使用$.getJSON()
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json',
success: function(json) {
if ( json.redirect )
window.location.href = json.redirect;
else
$("body").cftoaster({content: json.message});
}
})