gpt4 book ai didi

jQuery 和 JSONP - 跨域和同域

转载 作者:行者123 更新时间:2023-12-01 04:55:48 24 4
gpt4 key购买 nike

我了解 JSONP 的工作原理,但有些细节或语法却让我困惑。我正在处理的示例是一个“引用旋转器”,它在使用 JSON 的单个域上运行良好,但我也想在另一个域上使用它,只更新一个数据源。

(旁注:我很奇怪,当调用域是 subdomain.mydomain.com 时,从 mydomain.com 发出请求会弹出 CORS 问题。希望子域不受影响!!)

我有一个用静态函数填充的 JSON 文件,如下所示:

quotator.testimonialFetch(
{
"testimonials": [
{
"quote": "Amazing product!",
"quotedName": "Somebody",
"quotedTitle": "Director of Yoyos",
"company": "Kramerica",
"products": ["product1"],
"yearmonth": 201212,
"active": true
},
{
"quote": "Never seen anything like it.",
"shortquote": "When quote is too long, use this.",
"quotedName": "Fflewddur Fflam",
"quotedTitle": "",
"company": "Prydain",
"products": ["product1","product2"],
"yearmonth": 201212,
"active": false
}
]
}
);

我没有使用 $.getJSON 简写(附加回调),而是使用更详细的 $.ajax() 方法:

$.ajax({
type: 'GET',
url: 'http://www.mydomain.com/assets/testimonials.json',
async: false,
jsonpCallback: 'quotator.testimonialFetch',
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
console.log('success!');
console.dir(json.testimonials);
},
error: function(e) {
console.log('some sort of error!');
console.log(e.message);
}
});

它不会记录成功,但会记录错误,无论我是从 mydomain.com 还是 sub.mydomain.com 内进行调用。错误是某些东西“未定义”。不确定那可能是什么。

所以,最主要的是......不确定将处理逻辑放在哪里。它应该直接进入 $.ajax() 的回调吗?我确实创建了一个与填充名称匹配的函数,并且它确实接收数据对象:

quotator.testimonialFetch = function(data) {
// using the document ready function as a safety net; maybe I don't need to defer?
$(document).ready(function() {
quotator.quoteobj = data.testimonials;
console.log(quotator.quoteobj); // logs the object I'm expecting! Yay!
};
});
}

了解它的作用并不是太重要,或者至少我认为这不重要。重要的是:

-当从 sub.mydomain.com 进行 $.ajax() 调用时,逻辑启动,处理引号,结果是成功的......“排序的”,因为虽然 $.ajax 调用返回的是 JSONP,但会触发错误回调,然后通过回调函数正确处理数据...?!

-当从 mydomain.com 进行 $.ajax() 调用时,我得到了我想要的对象,但无法处理它。我可以看到我的 JSONP 响应,但 $.ajax 成功回调本身没有任何处理,因为而是触发了错误回调。然后 quotator.testimonialFetch() 没有被触发...由于是同域而不是跨域?

感谢您的宝贵时间。

最佳答案

您无法使用 JSONP 执行错误回调或同步 AJAX。 The docs似乎没有对同服务器调用进行异常(exception)处理。

关于jQuery 和 JSONP - 跨域和同域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444355/

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