【发布时间】:2012-01-03 15:25:16
【问题描述】:
我有一个相当复杂的函数,它会在提交表单时执行几个 AJAX 帖子,以验证值。根据从 POST 返回的值,提交应该工作或失败。我认为这可以使用全局布尔值来完成,并在整个函数中将其值设置为 true 或 false,然后在最后检查布尔值是否已更改为“true”,如果是则调用“return false;”。
但这是失败的。我已经阅读了它,我认为这是因为 AJAX 调用是异步的,所以代码没有按顺序执行。
我的代码是这样的:
$('.to-step-3').click(function(){
var shape = '';
blnError = false;
$.post('/base/RoomBuilder/GetRoomShape.aspx', function(data) {
if(data.substring(0,5) == 'Error'){
alert(data);
blnError = true;
}else{
shape = data;
$.post('/base/RoomBuilder/GetRoomDimensions.aspx', function(data2) {
if(data2.substring(0,5) == 'Error'){
alert(data2);
blnError = true;
}else{
var arrDims = data2.split('_');
var l = arrDims[0];
var w = arrDims[1];
var sl = arrDims[2];
var ll = arrDims[3];
var sw = arrDims[4];
var lw = arrDims[5];
var failMessage = 'Please enter all required dimensions to build your room';
switch(shape) {
case 'square':
if(!(notNullOrEmpty(l))){
alert(failMessage);
blnError = true;
}
break;
case'rectangle':
if(!(notNullOrEmpty(l)) || !(notNullOrEmpty(w))){
alert(failMessage);
blnError = true;
}
break;
case'lshaped':
if(!(notNullOrEmpty(sl)) || !(notNullOrEmpty(ll)) || !(notNullOrEmpty(sw)) || !(notNullOrEmpty(lw))){
alert(failMessage);
blnError = true;
}
break;
case'lshapedalt':
if(!(notNullOrEmpty(sl)) || !(notNullOrEmpty(ll)) || !(notNullOrEmpty(sw)) || !(notNullOrEmpty(lw))){
alert(failMessage);
blnError = true;
}
break;
}
}
});
}
});
if(blnError == true){
return false;
}else{
return true;
}
});
我找到了一个类似 jquery - return value from callback function (in post request) into the function its inside of? 的示例,但在我需要做的事情的背景下我很难理解它(我承认我不擅长 Javascript!)
谁能指出我正确的方向,因为我已经盯着这条路太久了!谢谢大家。
【问题讨论】:
标签: jquery ajax function post callback