2

我正在使用 ajax 进行 GET,使用 dataType jsonp 从另一个我不拥有且无法更改的域上的服务器中引入一个小的 xml 文件。除 jsonp 之外的任何数据类型都失败,并显示“Access-Control-Allow-Origin 不允许使用 Origin localhost。很好。

问题是当我说它是 jsonp 时服务器返回相同的 xml 响应,而 jQuery 似乎不喜欢这样。dataFilter 似乎没有帮助,因为当我引用返回的数据时,我得到一个“Uncaught SyntaxError:Unexpected token <”错误。也许还有其他方法可以使用 dataFilter 设置?

我的代码复制如下:

$(document).ready(function(){  
  $.ajax({
    type: "GET",  
    url: "https://b2b.firstenergycorp.com/invoke/ ... very long url... ",  
    dataType: "jsonp",
    dataFilter: function(data, type){
      if(type == "xml") alert("returned xml!");
      var newdata = data.replace(/</g, '{');   // Firebug complains about this
      newdata = newdata.replace(/>/g, '}');
      return newdata;
    },
    jsonp: "callback",
    jsonpCallback: "jsonpcallback"
  });  
  function jsonpcallback(returndata) {
    alert( "data returned: " + returndata );
  };
});      
4

1 回答 1

0

答案来自另一个 stackoverflow 问题: Jquery success function not fire using JSONP

“......事后看来,解决方案可能应该比以前更明显,但您需要让网络响应直接写入响应流。简单地返回一串 JSON 是行不通的,您需要有人构建它并将其流回。

于 2012-07-15T23:22:43.523 回答