在$ .ajax()之外使用时,如何让imageX显示它的值?
var imageX;
$.ajax({
type: 'GET',
url: 'php/my1.php',
dataType: 'json',
async: 'false',
success: function(response){
imageX = response[0].studentName,
groupX = response[0].subjectId;
}
});
alert(imageX);
答案 0 :(得分:7)
更改
async: 'false',
到
async: false,
'false'是由Jquery(JS)强制转换为true的字符串。
Jquery Ajax文档说async接受布尔值。
async(默认值:true):类型:布尔值 默认情况下,所有请求都是异步发送的(即设置为 默认为true)。如果需要同步请求,请将此选项设置为 假的。
https://api.jquery.com/jQuery.ajax/
假:异步 将导致jQuery.ajax()调用阻塞,直到它返回。 而不是这个:
function your ajax_calling_function
call your ajax
callback with results
答案 1 :(得分:2)
您需要设置async: false
(type Boolean)。
如果您将false
关键字包装为',则Javascript会认为这是string
。 jQuery认为async
属性设置为true
答案 2 :(得分:0)
实际上设置async: false
是一种不好的方法,请引用此answer:
使AJAX调用同步通常是一个坏主意。不要做 它。我是认真的。为了完整起见,我在这里只提到它。 你问为什么这么糟糕?
JavaScript在浏览器的UI线程中运行,任何长时间运行 进程将锁定UI,使其无响应。另外,那里 是JavaScript和浏览器执行时间的上限 会询问用户是否继续执行。所有的 这真是糟糕的用户体验。用户将无法分辨 是否一切正常。此外,效果会 对于连接速度慢的用户来说会更糟。
一种方法是将代码重写为:
function getImage() {
var imageX;
$.ajax({
type: 'GET',
url: 'php/my1.php',
dataType: 'json',
success: function(response){
imageX = response[0].studentName,
groupX = response[0].subjectId;
}
});
return imageX;
}
然后你可以将它传递给变量:
var result = getImage();
并获取AJAX调用返回的数据,如下所示:
result.success(function (data) {
alert(data);
});