json上的Ajax数据过滤器,实际上是xml

时间:2012-07-13 20:34:18

标签: ajax jsonp

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

问题是,当我说它是jsonp时,服务器返回相同的xml响应,jQuery似乎不喜欢这样。 dataFilter似乎没有帮助,因为即使我引用返回的数据,我得到一个“未捕获的SyntaxError:意外的令牌<”错误。也许有其他方法可以使用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 );
  };
});      

1 个答案:

答案 0 :(得分:0)

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

“......事后看来,解决方案可能应该比以前更加明显,但是您需要将Web响应直接写入响应流。只需返回一串JSON就不会这样做,你需要有人构建它并将其流回。