让 ajax 数据返回到调用函数 - 需要澄清之前的答案
Getting ajax data back to calling function - need clarification of previous answer
我正在尝试实现以下问题中给出的答案:如何从异步调用返回响应?
向下滚动到Hemant Bavle的答案(目前为62票)。这正是我试图实现的,但仍然没有运气。这是我的尝试(为了简洁起见,我省略了ajaxSetup()
和fail()
):
function isGoodPIN(pin) {
var result;
var cURL = "server/checkPIN?pin=" + pin;
function setResult(ajaxResult) {
result = ajaxResult; // <--------- true here...
}
var ajaxResponse = $.get(cURL, function (data) {
// data is "OK" here...
setResult(data == "OK" ? true : false);
});
return result; //<--------- undefined here
}
这是一个范围问题,因为setResult()
的结果是setResult()
本地的,在它之外不可见?如果是这样,这个问题的解决方案是什么?
您似乎仍然缺少 AJAX 的重点; 也就是说,它是异步的。这意味着您不能从父函数返回任何内容,因为 return
语句将在请求返回任何数据之前很久执行。
您需要更改函数中使用的逻辑,以合并基于 AJAX 结果执行的回调函数。试试这个:
function isGoodPIN(pin, validCallback, failCallback) {
$.get('server/checkPIN', { pin: pin }, function (data) {
if (data == "OK") { // note you should really use a boolean here
validCallback();
} else {
failCallback();
}
})
}
isGoodPin('1234', function() {
console.log('valid pin');
}, function() {
console.log('invalid pin');
});
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 画布数据到图像
- 使用jquery将mysql数据获取到新的表行中
- 使用html中的外部javascript进行数据验证
- 有时数据是't显示在浏览器中
- React中的数据集表示
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 让 ajax 数据返回到调用函数 - 需要澄清之前的答案