gpt4 book ai didi

javascript - Jquery 成功函数未使用 JSONP 触发

转载 作者:行者123 更新时间:2023-12-03 21:33:40 24 4
gpt4 key购买 nike

我一直在使用 jQuery 调用位于不同域的服务。对服务的调用已成功进行(我的调试点被触发),并且返回了正确的响应(我嗅探了流量)。

我的问题主要是成功和失败回调不会被触发。我读过一些other posts表明使用 JSONP 时不会触发错误事件。成功事件也是如此(也许是因为假设我提供自己的回调函数),或者是否有办法触发我的成功回调。提前致谢。

$.ajax({
type: "GET",
url: urlOnDiffDomain,
async: false,
cache: false,
dataType: 'jsonp',
data: {},
success: function(data, textStatus) {
alert('success...');
},
error: function(xhr, ajaxOptions, thrownError) {
alert('failed....');
}
});

最佳答案

好吧。万一将来有人需要知道......事后看来,解决方案可能应该比以前更明显,但您需要将网络响应直接写入响应流。简单地返回 JSON 字符串并不能做到这一点,您需要有人构造它并将其流式传输回来。如果你确实这样做的话,我原来的帖子中的代码将工作得很好。

服务代码示例:

public void DoWork()
{
//it will work without this, but just to be safe
HttpContext.Current.Response.ContentType = "application/json";
string qs = HttpContext.Current.Request.QueryString["callback"];
HttpContext.Current.Response.Write(qs + "( [{ \"x\": 10, \"y\": 15}] )");
}

为了明确起见,这是客户端代码。

function localDemo(){
$.getJSON("http://someOtherDomain.com/Service1.svc/DoWork?callback=?",
function(data){
$.each(data, function(i,item){
alert(item.x);
});
});
}

如果有更好的方法来做到这一点,我洗耳恭听。对于其他人来说,我知道 WCF 4.0 中有一些对 JSONP 的 native 支持的概念。另外,您可能想做一点checking出于安全目的 - 尽管我没有调查太多。

关于javascript - Jquery 成功函数未使用 JSONP 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380551/

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