嘿,我有这个小脚本在用户点击“提交”时运行:
$(document).ready(function(){
$("form").submit(function(){
var username = $("#username-field").val();
if(username) {
$.ajax({
url: 'check.php',
data: {data: JSON.stringify(username)},
type: 'POST',
dataType: "json",
success: function (data) {
if(data.result == 0) {
alertify.error( data.error );
return false;
}
}
});
} else {
alertify.alert( "You forgot to type username" );
return false;
}
});
});
当我在username-input-field ...中输入内容时,脚本“check.php”返回0,但没有显示alertify.error。
不是显示alertiy.error(data.error)而是重新加载页面?为什么?我设置“return false”,所以不应该刷新。
BUT: 如果我在输入字段中没有输入任何内容,那么if子句将变为false并且这样可行:
} else {
alertify.alert( "You forgot to type username" );
return false;
}
那么为什么这会起作用,但是ajax-example没有呢?
答案 0 :(得分:1)
试试这个代码段,应该解决您的问题:
$(document).ready(function () {
$("form").submit(function () {
var username = $("#username-field").val();
if (username) {
$.ajax({
context:this, //set context here
url: 'check.php',
data: {
data: JSON.stringify(username)
},
type: 'POST',
dataType: "json",
success: function (data) {
if (data.result == 0) {
alertify.error(data.error);
}
else this.submit(); //submit form using DOM node property (not calling jq handler)
}
});
} else {
alertify.alert("You forgot to type username");
}
return false;
});
});
答案 1 :(得分:0)
您需要在$.ajax
电话IIRC之外返回false。回调返回与函数的返回值不同。
答案 2 :(得分:0)
将return false返回到if语句之外的末尾。你想要总是返回false,所以从逻辑上来说,if语句里面没有任何意义,因为它并不依赖于条件。
$(document).ready(function(){
$("form").submit(function(){
var form = this;
var username = $("#username-field").val();
if(username) {
$.ajax({
url: 'check.php',
data: {data: JSON.stringify(username)},
type: 'POST',
dataType: "json",
success: function (data) {
if(data.result == 0) {
alertify.error( data.error );
//return false;
}
else {
form.submit();
}
}
});
} else {
alertify.alert( "You forgot to type username" );
//return false;
}
return false;
});
});
它没有按原样运行的原因是因为当您在成功回调中返回时,您的页面已经重新加载。成功的回调甚至没有被执行。