我试图通过JQuery获取外部REST API数据,但它重新定义未定义。但是当我使用我的本地REST API网址时,它可以工作。任何人都可以解释什么是问题。任何代码示例将不胜感激。
这是我如何通过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);
}
});
}
答案 0 :(得分:0)
结果是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);
}
我尝试对此进行测试,但我得到了is not allowed by Access-Control-Allow-Origin
这是同源限制,因此请确保您可以访问此API,或者您必须在服务器上使用PHP中的CURL来执行此操作例。
您在问题中显示的功能中获得了id变量,但您没有使用它, 如果你想发送它,请添加:
,data:{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');
}
});
}