我意识到SO充满了有关此主题的材料,我已经经历了它,但是似乎无法使它起作用。
我的函数接受一个JSON响应,对其进行解析,并在成功时返回false,在错误时返回true(这是有意向后的)。
console.log显示我得到了正确的响应,但是我的函数不会返回(submitme
尽管它已更改为true
回调内部,但仍为false )。因此,该函数始终返回false。
我猜我的回调操作有问题,但是我不确定自己做错了什么。
我可能不在这里,但我认为回调是可以的,它只是在脚本执行后才执行(因此是异步的)。
但是我的问题仍然存在,如果仅通过ajax更改布尔值,在这种情况下如何让表单提交true?
这是我的摘录:
$(".form").submit(function(){
error = $("#error");
var submitme = false;
function ajaxCall(url, type, data, callback) {
$.ajax({
url: url,
type: type,
data: data,
success: function(response){
try {
obj = JSON.parse(response);
text = obj.Error;
error.html('');
error.append(text);
//if the json was parsed, return false
submitform = false;
}
catch (error) {
//if an error was thrown, return true
submitform = true;
}
callback(submitform);
},
});
}
function ajaxCallSuccess(submitform) {
console.log(submitform); //This shows correct output!
if (submitform == 'true'){ //Here I want to manipulate the global submitme variable so I can submit the form on "true"
submitme = true; //<-- this (I think) changes the global variable asynchronousy (so after the function is read), hence the outer function always returns false
}
};
ajaxCall(url, type, data, ajaxCallSuccess);
if (submitme == true) {
return true;
}
else {
return false;
}
});
编辑:
我编辑的帖子,也许可以澄清一下问题
您需要始终返回false,然后手动提交表单,以防AJAX调用成功:
$('.form').submit(function() {
function ajaxCall(url, type, data, callback) {
$.ajax({
url: url,
type: type,
data: data,
dataType: 'json',
success: function(response) {
callback(true);
},
error: function() {
callback(false);
}
});
}
var form = $(this);
function ajaxCallSuccess(submitform) {
if (submitform) {
// submit the form here:
form[0].submit();
}
};
ajaxCall(url, type, data, ajaxCallSuccess);
return false;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句