我有以下AJAX脚本,但由于某种原因,var ok它没有返回true或false,因此表单可以继续:
function ajax_call(email,title,url){
var email = document.getElementById("email").value;
var title = document.getElementById("title").value;
var url = document.getElementById("url").value;
var parametros = {"emaail":email, "tiitle":title, "uurl":url};
var ok = true;
$.ajax({
data: parametros,
url: 'validate.php',
type: 'post',
error: function () {
alert("An error has occurred! Try Again!");
},
success: function (response) {
if(response == 'bien') { ok = true; } else { $("#ajax_cal").html(response); ok = false; }
}
});
return ok;
}
HTML:
<form onsubmit="return ajax_call();">
...
</form>
PHP:
<?php
//////....
if(!empty($errors)) {
foreach($errors as $error) {
echo '<li>'.$error.'</li>';
}
} else { echo 'bien'; }
?>
除了返回值之外,一切都很好。 提前谢谢。
答案 0 :(得分:4)
完全阻止提交,发送ajax请求,如果好,请提交表单。
HTML:
<form id="myform">
...
</form>
JavaScript的:
$("#myform").submit(function(e){
// prevent submit
e.preventDefault();
var email = document.getElementById("email").value;
var title = document.getElementById("title").value;
var url = document.getElementById("url").value;
var parametros = {"emaail":email, "tiitle":title, "uurl":url};
$.ajax({
data: parametros,
url: 'validate.php',
type: 'post',
context: this,
error: function () {
alert("An error has occurred! Try Again!");
},
success: function (response) {
if($.trim(response) == 'bien') {
this.submit(); // submit, bypassing jquery bound event
}
else {
$("#ajax_call").html(response);
}
}
});
});
答案 1 :(得分:1)
您在功能结束时返回正常状态。在您的ajax请求发送和完成之前返回。
您不能依赖函数的返回值,您应该在“成功”部分内部执行某些操作。这主要取决于你想要对你的返回值做什么
答案 2 :(得分:0)
我是jquery的新手,但在我一直在努力的一些剧本中,我必须在你的'响应'前加上前缀。
例如......
if(response.tiitle == 'bien') { ok = true; } else { $("#ajax_cal").html(response); ok = false; }
还要注意你的“参数”中有双字母,但我确信这是故意的(即小提示而不是标题等)。