0
我试图构建一个.js文件,它将数据发送到外部API,等待响应并解释结果。外部API是基于XML的,并接受一个HTTPS Post,其XML为body(content-type; text/xml)。我可以通过cURL正确调用API。jQuery上的API调用
这是我到目前为止有:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body onload="CallService()">
<script type="text/javascript">
var webServiceURL = 'https://www.url.com';
var xmlString = '<xml><parameter1>value1</parameter1>
<parameter2>value2</parameter2></xml>';
function CallService() {
$.ajax({
url: webServiceURL,
type: "POST",
dataType: "xml",
data: xmlString,
processData: false,
contentType: "text/xml; charset=\"utf-8\"",
success: OnSuccess,
error: OnError
});
return false;
}
function OnSuccess(data, status) {
alert(data.d);
}
function OnError(request, status, error) {
alert('error');
}
$(document).ready(function() {
jQuery.support.cors = true;
});
</script>
</body>
</html>
当我打开HTML我得到一个警告说“错误”,并没有出现在另一端(外部API的)。有没有办法使用JavaScript/Ajax/jQuery来做到这一点,还是我需要一个接收JS调用的“支持”代码?
存在各种问题,从浏览器调用不同域的URL。基本的答案是,这是不可能的,尽管一些最近的发展使服务器允许这样的请求成为可能。你必须控制服务器软件才能做到这一点。 – Pointy
如果我确实控制了服务器,该怎么办?为了达到这个目的,我需要改变什么样的设置? – user1375193
寻找关于“CORS” - 跨源资源共享的教程。这是一个HTML5的东西,它涉及一些特殊的标题和类似的东西。当然,旧的浏览器不支持它,但它毕竟是2012年:-) – Pointy