首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >包装jquery函数并返回值

包装jquery函数并返回值
EN

Stack Overflow用户
提问于 2011-01-20 20:49:15
回答 4查看 646关注 0票数 3

我可以包装这段代码,以便在调用函数时返回包含json对象的变量吗?

示例:

代码语言:javascript
运行
复制
   function GetNewSomething() {
        var newtb = 0;
        $.get("/something/new",
                function (data) {
                    newtb = data;
                }
                );
        return newtb; // as of now this always returns undefined...
    }

尝试过这种方法,但只返回未定义的..

提前感谢,伙计们!

致以敬意,

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-20 20:51:38

你不能。Ajax调用是异步的。你必须向你的函数传递一个回调:

代码语言:javascript
运行
复制
function GetNewSomething(cb) {
    $.get("/something/new", cb);
}

并使用以下命令调用它:

代码语言:javascript
运行
复制
GetNewSomething(function(data) {
    // do something with data
});

I wrote something about it

哦,如果响应是JSON字符串,那么您可能希望使用.getJSON,它也可以将响应解码为JavaScript对象。

票数 6
EN

Stack Overflow用户

发布于 2011-01-20 20:52:07

.get()$.ajax()的包装器。如果没有明确配置,所有AJAX请求都会以方式异步运行。这反过来意味着,您的return newtb;语句将在$.get()完成之前执行。

解决此问题的一个好方法是自己调用另一个回调。这可能看起来像这样:

代码语言:javascript
运行
复制
function GetNewSomething(callback) {
    $.get("/something/new",
            function (data) {
                if( typeof callback === 'function' )
                    callback.apply(this, [data]);
            }
            );
}

然后叫它像这样

代码语言:javascript
运行
复制
GetNewSomething(function(data) {
     // do something with data
});
票数 3
EN

Stack Overflow用户

发布于 2011-01-20 20:52:06

$.get是异步的,这就是在get请求返回时向它传递一个要调用的函数的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4747300

复制
相关文章

相似问题

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