gpt4 book ai didi

jQuery Ajax 方法不返回 XHR 对象

转载 作者:行者123 更新时间:2023-12-01 00:08:31 25 4
gpt4 key购买 nike

更新1:我还没有弄清楚发生了什么,但这绝对是我的项目的问题。创建一个简单的测试页面后,我能够验证 getJSON 实际上确实返回了一个 XHR 对象,就像它应该的那样。

更新2:哇,这很奇怪。经过更多测试后,我发现如果我指定“callback=?” URL 字符串中的参数 XHR 对象未正确返回。但是,如果我没有指定“callback=?”参数,XHR对象被正确返回。问题是,我正在调用 JSONP 服务,因此“callback=?”参数为必填项。

关于为什么会出现这种情况有什么想法吗?

更新 3:以下是一些独立的代码示例来说明该问题。在第一个示例中,console.log(request) 未定义。当我在第二个代码示例中硬编码回调参数时,console.log(request) 是 XHR 对象。

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function() {
var request = $.getJSON('http://localhost?callback=?', function(data) {

});
console.log(request);
});
</script>
</body>
</html>

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function() {
var request = $.getJSON('http://localhost?callback=callback', function(data) {

});
console.log(request);
});
</script>
</body>
</html>

更新 4: 根据下面 regilero 的评论,我转而使用 $.ajax 方法并通过数据对象传递参数。以下是请求的完整代码:

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);

如果我在配置对象中指定“dataType: 'jsonp'”,则 console.log(request) 再次未定义。但是,如果我指定“dataType: 'json'”,console.log(request) 就是 XHR 对象。

此行为与我使用 $.getJSON 快捷方式遇到的情况一致。

<小时/>

原始问题

根据 stackoverflow 问题/答案:Abort Ajax requests using jQuery以及本网站和其他网站上的许多其他问题/答案,jQuery Ajax 方法应该返回 XHR 对象。

但是,当我运行以下代码时,请求是“未定义”。

var request = $.getJSON(url, function(data) {
console.log(data);
});

console.log(request);

我错过了 jQuery 的更改吗?我使用的是 1.4.4。

最佳答案

jsonp不使用 XMLHTTPRequest。它是同源策略的一种解决方法,适用于所有 XMLHTTPRequest;它的工作原理是插入 <script>相反,将标签添加到 DOM 中,要求服务器返回一个封装在 JS 函数中的 JSON 对象,由 callback=? 表示。参数。

由于未使用 XMLHTTPRequest,因此不会返回该类型的对象。

关于jQuery Ajax 方法不返回 XHR 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com