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

标签 javascript jquery jsonp

我一直在使用 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/

相关文章:

javascript - DataTables:通过循环动态创建列属性

javascript - 防止对 php 的垃圾 XMLHTTP 请求

javascript - jQuery 加载脚本执行多次

javascript - Jquery UI 自动完成输入 - 如何检查更改时输入是否为空?

jquery - 如何让 web.py python webservice 返回对 jquery 的 jsonp 调用

javascript - 立即调用的函数表达式和相应的普通函数调用之间有区别吗?

javascript - 无法从组件方法访问数据

javascript - 检测复选框在 Angular.js ng-change 事件中是否被选中或未被选中

javascript - 使用 Javascript 通过 XHR 访问 CouchDB

javascript - 如何在 jsonp 调用上接收有关 404,409 和其他服务器错误的通知