3

我正在尝试通过 JQuery 获取外部 REST API 数据,但它返回未定义。但是当我使用我的本地 REST API url 时,它可以工作。任何人都可以解释什么是问题。任何代码示例将不胜感激。

这就是我通过 JQuery 访问外部 Rest API 的方式。

function GetCompanyName(id) {
        jQuery.support.cors = true;
        $.ajax({
            url: 'http://novacompanysvc.azurewebsites.net/api/companies' + '/' + id,
            type: 'GET',
            dataType: 'jsonp',
            success: function (data) {
                WriteResponse(data);
            },
            error: function (x, y, z) {
                alert("company" +  x + '\n' + y + '\n' + z);
            }
        });
    }
4

1 回答 1

0
  1. 结果是 XML,因此您需要设置dataType: "text/xml"然后解析它:

                success: function (data) {
                if (window.DOMParser)
                      {
                      parser=new DOMParser();
                      xmlDoc=parser.parseFromString(data,"text/xml");
                      }
                    else // Internet Explorer
                      {
                      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                      xmlDoc.async=false;
                      xmlDoc.loadXML(data); 
                      }
    
  2. 我尝试对此进行测试,但得到了:is not allowed by Access-Control-Allow-Origin这是同源限制,因此请确保您有权访问此 API,否则您将不得不在服务器上使用 PHP 中的 CURL 进行此操作。

  3. 您在问题中显示的函数中获得了 id 变量,但您没有使用它,如果您想发送它,请添加:

    ,数据:{ id:id }

请求应如下所示:

      function GetCompanyName(id) {
        jQuery.support.cors = true;
        $.ajax({
            url: 'http://novacompanysvc.azurewebsites.net/api/companies',
            type: 'GET',
            data:{ id:id },
            dataType: "text/xml",
        success: function (data) {
           if (window.DOMParser)
              {
              parser=new DOMParser();
              xmlDoc=parser.parseFromString(data,"text/xml");
              }
            else // Internet Explorer
              {
              xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
              xmlDoc.async=false;
              xmlDoc.loadXML(data); 
              }
           WriteResponse(data);
         },
         error: function (x, y, z) {
                alert('error');
         }
      });
    }
于 2013-10-13T01:45:09.797 回答