Ajax导致alert()

时间:2014-02-20 09:09:07

标签: javascript php jquery ajax

在$ .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);

3 个答案:

答案 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: falsetype 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);
});