道歉必须是一个全新的问题。我开始使用Backbone与现有的Rails应用程序交谈。我正在使用Chrome中的控制台来测试一些JS功能,而且我看到了我无法理解的行为。
我已经定义了一个名为apiGet
的JS函数,它只包含一个jQuery AJAX调用,其中一些自定义内容被卡在HTTP请求头中。
当我调用apiGet
并将结果存储在变量中时,我可以在该变量上调用.responseText
并查看该字段的内容。
但是,如果我只是尝试在.responseText
来电时致电apiGet(...)
,即apiGet(...).responseText
,则显示的结果为undefined
。这对我没有意义: - )
我错过了一些明显的东西 - 有人能告诉我吗?
这是控制台的样子:
> var url = 'http://localhost:3002/api/exercises/11';
undefined
> result = apiGet(url);
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
> result.responseText
"{"id":1,"number":2,"version":1,"markup":null,"html":null,"background":null}"
> apiGet(url).responseText
undefined
答案 0 :(得分:1)
看起来你的函数apiGet
返回一个xhr(请求对象)。这将异步执行,因此在响应从服务器返回之前responseText
不可用。当您在返回时直接调用该属性时,它发生得太快以至于服务器尚未响应,但是当您手动使用控制台时,当您键入result.responseText
并按Enter键时,结果已经是英寸
当然是猜测,因为我还没有看到getApi
的内容。