Javascript 成功数据从AJAX获取类型返回null
我正在使用以下代码将Javascript 成功数据从AJAX获取类型返回null,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在使用以下代码将成功数据放入变量: var compdet = null; $.ajax({ url: uri2 + "/" + $("#textbox_id").val(), type: "GET", cache: false, success: function (data) { compdet = data; } }); 为了检查我的var compdet
成功数据
放入变量
:
var compdet = null;
$.ajax({
url: uri2 + "/" + $("#textbox_id").val(),
type: "GET",
cache: false,
success: function (data) {
compdet = data;
}
});
为了检查我的var compdet
是否有价值,我添加了:
console.log(compdet);
遗憾的是,它只返回null
。因此,我尝试将控制台.log
放入
success: function (data) { console.log(data); }
它返回我想要看到的输出。谁能给我解释一下
我在这里意识到了一些事情。实际上,您可以进行Javascript
函数async
和等待AJAX
调用
例如:
async function func_name() {
await $.ajax({
// some codes here
});
}
JavaScript的执行非常简单。如果在AJAX之后有任何代码,它可能会在完成AJAX之前执行。这就是为什么会得到值null
在这个场景中,您可以在success()
回调中执行下一个代码块,或者调用另一个方法来执行下一个代码块
方法调用的示例:
function next(compdet) {
// code stuff
}
$.ajax({
url: uri2 + "/" + $("#textbox_id").val(),
type: "GET",
cache: false,
success: function (data) {
next(data)
}
});
查看之间的区别。您将
console.log(compdet)放在了什么地方
@KrishnaPrashatt在$.ajax({})之后代码>行您的ajax本质上是异步的。有关如何继续的更多信息,请参阅链接的dupe。您可以分配ajax的响应,即在ajax之后和ajax范围内的数据。还可以在分配后在ajax代码中使用控制台compdet变量,因为javascript在使用http请求时是异步的。它没有等待任何http请求响应。您在函数callYes的参数中有一个输入错误,已更正。谢谢。@MH2K9,如果我使用函数next(compdet){console.log}
它会正确输出。但是,如果我将compdet
放入一个全局变量
,我仍然会得到null。由于AJAX的异步特性,您会得到null。难道next()
还不够吗?