使用AngularJS返回xml的跨域ajax请求

时间:2013-08-14 19:00:35

标签: xml ajax angularjs jsonp

我正在尝试使用AngularJs连接到answerbase api。我得到它使用jsonp返回xml但我得到格式错误。不幸的是,xml是他们将返回的唯一格式。我试图使用xml2json库但没有成功。 这是我到目前为止所做的。

var url = "http://myAnswerBaseSite.com/api/getquestionslist.aspx?apikey=myKey&callback=JSON_CALLBACK";

$http.jsonp(url,
    {
        transformResponse: function (data) {
            var x2js = new X2JS();
            var json = x2js.xml_str2json(data);
            return json;
        }
    })
    .success(function (data) {
        console.log(data.found);
    });

这可能吗? 提前致谢

2 个答案:

答案 0 :(得分:3)

同样在这里。不幸的是,jsonp函数在转换回调之前解析内容。所以不,这是不可能的。

您只能将响应更改为JSON或使用其他方法。 (好吧,你也可以在你的服务器上包装真正的API并以JSON格式生成相同的结果,构建镜像API服务)

度过愉快的一天,

答案 1 :(得分:1)

如果无法访问您正在使用的相同服务,则很难确定问题所在。您使用的是公共API吗?

我能够使用$http.get获得基本演示。看看this plunker

var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, $http) {
  $scope.name = 'World';
  var url = "data.xml";
  $http.get(url,{
    transformResponse: function (data) {
      var x2js = new X2JS();
      var json = x2js.xml_str2json(data);
      return json;
    }
  }).success(function (data) {
    $scope.foo = data.foo;
  });
});