首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax的结果是警报()

Ajax的结果是警报()
EN

Stack Overflow用户
提问于 2014-02-20 09:09:07
回答 3查看 4.6K关注 0票数 1

如何获得imageX在$.ajax()之外使用时显示它的值?

代码语言:javascript
复制
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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-20 09:10:59

变化

async: 'false',

async: false,

‘'false’是由Jquery(JS)转换为true的字符串。

Jquery文档表示异步接受布尔值。

异步( default : true):Type: Boolean默认情况下,所有请求都是异步发送的(也就是说,默认情况下这被设置为true )。如果需要同步请求,请将此选项设置为false。

https://api.jquery.com/jQuery.ajax/

false将导致jQuery.ajax()调用阻塞,直到它返回。而不是这样:

代码语言:javascript
复制
function your ajax_calling_function
    call your ajax 
    callback with results
票数 7
EN

Stack Overflow用户

发布于 2014-02-20 09:15:59

您需要设置async: false (布尔型)。

如果用‘包装false关键字,Javascript认为这是一个string。jQuery将async属性设置为true

票数 2
EN

Stack Overflow用户

发布于 2014-02-20 09:38:25

实际上,设置async: false是一种糟糕的方法,引用了这个回答的话

让AJAX调用同步通常是个坏主意。别这么做。我是认真的。我在这里提这件事只是为了完整。你为什么这么问? JavaScript在浏览器的UI线程中运行,任何长时间运行的进程都会锁定UI,使其没有响应。此外,JavaScript的执行时间也有上限,浏览器将询问用户是否继续执行。所有这些都是非常糟糕的用户体验。用户将无法判断一切是否正常。而且,对于连接缓慢的用户来说,效果会更糟。

一种方法是将代码重写为:

代码语言: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;
}

然后,您可以将它传递给一个变量:

代码语言:javascript
复制
var result = getImage();

并获取AJAX调用返回的数据,如下所示:

代码语言:javascript
复制
result.success(function (data) {
    alert(data);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21903019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档