我有点不熟悉jQuery/ajax
。
我一直在使用$.post..
发送和接收消息,但是它极大地改善了我的网站。
我需要一个工具来将 ajax cal 发送到服务器进行验证
如果验证成功,那么我希望服务器重定向,如果没有,它应该返回页面并显示错误消息。
我的问题是哪个jQuery
电话最适合这个。
根据我$.post('....')
在服务器上使用和重定向的经验,由于某种原因它不会重定向。
JS:
$('#submitButtton').click(function(){
$.ajax({
dataType: "json",
type: 'POST',
url: url/to/ajax-results.php',
data: { $('form#my-form').serialize(); }
}).done(function(data){
if(data.response == 'error') {
$('#results').html('<div class="error">'+data.report+'</div>');
$('#results').show();
return false;
}
window.location.href = data.redirect
});
});
PHP:
<?php
$errors = array();
$val1 = $_POST['val1'];
if(empty($val1)) {
$errors[] = 'val1 cannot be empty';
}
if(count($errors) > 0) {
echo json_encode(array(
'response' => 'error',
'report' => 'send your errors array, or custom error message'
));
exit();
} else {
echo json_encode(array(
'response' => 'ok',
'redirect' => 'http://www.domain.com/url/to/redirect'
));
exit();
}
?>
您可以在 ajax 调用中使用另一个 ajax 调用,或者只是触发表单提交。
$("form").on("submit", function (e) {
var $this = $(this);
e.preventDefault();
$.get("validate.php", $this.serialize()).done(function (valid) {
if (valid) {
$this.trigger("submit");
//OR
$.post("submit.php").done(function () { window.location = next; });
}
});
});
如果您使用 header() 使用 PHP 进行重定向,它不会使用 ajax 进行重定向,因为内容已经发送到客户端(您只能在处理任何数据之前使用此功能)
您应该尝试通过 javascript 重定向,而不是使用 window.location.href="my new page"
您可以在以下链接中找到更多信息
http://ntt.cc/2008/01/21/5-ways-to-redirect-url-with-javascript.html http://php.net/manual/en/function.header.php
如果您没有使用 PHP 重定向,那么我很抱歉
您可以使用其基础功能$.post
是$.ajax
$.ajax({
url: 'url',
data: 'json_or_string',
type: 'POST',
dataType: 'json',
success: function(json) {
if (json.clear == 1) {
document.location.href = "redirect";
} else {
$('#errormessage').html('Error Validation');
}
},
error: function (error) {
},
});