(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将受到高度赞赏。
答案 0 :(得分:1)
在 getTodayCats :
var self = this;
然后当需要访问 ID 时,你应该这样:
self.ids
在这种情况下使用 self,此模式,因为您需要在异步回调处理程序(ajax success)中访问 this 的属性。在没有原始 this 对象的情况下调用异步回调的处理程序,因此这用于利用函数的闭包传递原始函数。
对于jQuery的 ajax 方法,您还可以使用 context 选项传入 this 对象,该对象将用于它的回调处理程序。你是否使用它取决于你。我个人不喜欢,因为这不是其他异步处理程序的选项,例如超时和间隔,我宁愿保持一致。
答案 1 :(得分: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";
}
});
答案 2 :(得分: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;
}
答案 3 :(得分:-1)
尝试使用类似的东西......
${variable}