我搜索过这个并且似乎无法找到成功的答案,我正在使用jQuery ajax调用,我无法得到回调的响应.
这是我的coffeescript代码:
@H_301_8@initialize: (@blog,@posts) -> _url = @blog.url _simpleName = _url.substr 7,_url.length _avatarURL = exports.tumblrURL + _simpleName + 'avatar/128' $.ajax url: _avatarURL dataType: "jsonp" jsonp: "jsonp" (data,status) => handleData(data) handleData: (data) => console.log data @avatar = data
这是编译好的JS:
@H_301_8@ Blog.prototype.initialize = function(blog,posts) { var _avatarURL,_simpleName,_url,_this = this; this.blog = blog; this.posts = posts; _url = this.blog.url; _simpleName = _url.substr(7,_url.length); _avatarURL = exports.tumblrURL + _simpleName + 'avatar/128'; return $.ajax({ url: _avatarURL,dataType: "jsonp",jsonp: "jsonp" },function(data,status) { return handleData(data); }); }; Blog.prototype.handleData = function(data) { console.log(data); return this.avatar = data; };
我已经尝试了十几个变种,我无法弄清楚如何写这个?
谢谢.
最佳答案
您的参数不正确,您将回调作为第二个参数传递给$.ajax.您应该将其作为成功传递:在选项中,或将其添加到Ajax延迟对象.
由于handleData看起来像是附加到一个对象,很可能是这个,你需要用@作为前缀.
虽然您传递URL的方式有效,但API现在建议将URL作为第一个参数传递,将选项作为第二个参数传递.
@H_301_8@$.ajax _avatarURL,dataType: "jsonp" jsonp: "jsonp" success: (data,status) => @handleData(data)
要么
@H_301_8@$.ajax _avatarURL,dataType: "jsonp" jsonp: "jsonp" .done (data) => @handleData(data)