标签:javascript jquery ajax return-value post
我有一个jQuery $.post函数,就像这样:
$.post('/test',json_data, function(data) {
result=data
});
此函数实际上是在验证中使用的…因此它的返回值(数据)包含true或false.但是此值未存储在变量“结果”中.我知道这是因为post进行了异步调用,因此它不等待响应.我想问的是,是否有一些解决方法?还是可以通过某种方式使此调用同步?
解决方法:
这被认为是不好的做法,但是$.ajax()
中有一个异步参数,您可以将其设置为false并同步等待结果:
var result;
$.ajax({
type: 'POST',
url: '/test',
data: json_data,
async: false,
success: function(data) {
result=data;
},
dataType: 'application/json'
});
//result available here
虽然在这种情况下不太方便,但更惯用的是利用回调:
function validate(okCallback, errorCallback) {
$.post('/test',json_data, function(data) {
if(data) {
okCallback();
} else {
errorCallback();
}
});
}
validate(
function() {
//proceed
},
function() {
//display validation error
}
}
标签:javascript,jquery,ajax,return-value,post 来源: https://codeday.me/bug/20191013/1910013.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。