0
(function () {
    var id="test";
    $.ajax({
       context: this,
       url : "http://weather.yahooapis.com/forecastrss",
       success : function(data){
            this.id = "was test";
       }
    });
    console.log(id);
})();

上一个问题不够清楚,所以听到的是问题的真正含义。当我这样做console.log(id)时,它不会显示更改的值。我想得到的是id. 我怎样才能做到这一点,我已经尝试了评论中的所有解决方案以及给出的答案,但没有一个对我有用?

一个 jsFiddle 将不胜感激。

4

4 回答 4

1

getTodayCats 中

var self = this;

然后当需要访问ids时,你应该像这样得到它:

self.ids

self的用法,这种模式是在这种情况下制作的,因为您需要在异步回调处理程序中访问this的属性(ajax 成功)。异步回调的处理程序是在没有原始this对象的情况下调用的,因此 this 用于利用函数的闭包传入原始对象。

对于 jQuery 的ajax方法,您还可以使用context选项传入this对象,该对象将用于其回调处理程序。是否使用它取决于您。我个人不喜欢这样做,因为这不是其他异步处理程序的选项,例如在超时和间隔的情况下,我更喜欢保持一致。

于 2013-07-29T11:07:54.040 回答
0

以这种方式访问​​“ids”-

getTodaysCats: function () {

    var args = Array.prototype.slice.call( WinJS.UI.Pages.define.arguments);
    var ids = args[1].ids;
    $.ajax({               
        ...
        , success: function (data) {
            var arr = new Array(1,2,3,4,5);
            foreach(var num in arr)
                ids += "ok";    
        }
    });

    return ids;
}
于 2013-07-29T11:31:18.833 回答
0
 $.ajax({
     url: "http://localhost/woodenspoon/getTodaysCats.php",
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     responseType: "json",
     context: this,
     success: function (data) {

         this.ids = "ok";

     }
 });
于 2013-07-29T11:20:00.860 回答
-1

尝试使用这样的东西......

${variable}

于 2013-07-29T11:09:27.373 回答