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