更新1:我还没有弄清楚发生了什么事情,但这肯定是我的项目的一个问题。在创建一个简单的测试页之后,我能够验证getJSON实际上是否返回了它应该的XHR对象。jQuery Ajax方法不返回XHR对象
UPDATE 2:哇,这很奇怪。在做了更多测试之后,我发现如果我指定“callback =?”参数在URL字符串XHR对象不正确地返回。但是,如果我没有指定“callback =?”参数,XHR对象正确返回。问题是,我在调用JSONP服务,所以“callback =?”参数是必需的。
有关为什么会出现这种情况的任何想法?
更新3:以下是一些独立代码示例来说明问题。在第一个示例中,console.log(request)未定义。当我在第二个代码示例中硬编码回调参数时,console.log(request)是XHR对象。
$(document).ready(function() {
var request = $.getJSON('http://localhost?callback=?', function(data) {
});
console.log(request);
});
$(document).ready(function() {
var request = $.getJSON('http://localhost?callback=callback', function(data) {
});
console.log(request);
});
UPDATE 4:每regilero的评论下面,我切换到使用$阿贾克斯方法,并通过一个数据对象传递的参数了。下面是请求的全部代码:
var request = $.ajax({
data: {
f: 'json',
geometry: '{x:44.203642291681845,y:-95.79085806500001}',
geometryType: 'esriGeometryPoint',
imageDisplay: '727,500,96',
layers: 'all',
mapExtent: '-179.462733065,16.116769346042226,-51.669764315000016,71.57609342040729',
returnGeometry: false,
tolerance: 10
},
dataType: 'jsonp',
success: function(data) {
console.log(data);
},
url: 'http://server.arcgisonline.com/ArcGIS/rest/services/Specialty/Soil_Survey_Map/MapServer/identify'
});
console.log(request);
如果我指定“数据类型:‘JSONP’”的配置对象,执行console.log(请求)再次定义。但是,如果我指定“dataType:'json'”,则console.log(request)是XHR对象。
此行为与我使用$ .getJSON快捷方式时遇到的情况一致。
原来的问题
%的计算器问题/答案在这里:Abort Ajax requests using jQuery和一些其他问题/本网站和其他人的答案,jQuery的Ajax的方法应该返回XHR对象。
但是,当我运行下面的代码时,请求是“未定义的”。
var request = $.getJSON(url, function(data) {
console.log(data);
});
console.log(request);
我错过了jQuery的变化吗?我正在使用1.4.4。
+0
根据手册,它应该还是回到一个XHR对象。 http://api.jquery.com/jQuery.getJSON/也许请求失败? –
2011-01-07 21:31:19
+0
@皮卡:不,请求绝对不会失败。 –
2011-01-07 21:38:33
+0
对,对不起。我误解了这个问题。 –
2011-01-07 21:40:05