我正在使用以下代码通过 JavaScript 调用 REST API。此代码适用于 IE,但在 Firefox 9.0.1 的发送方法中挂起。我相信 IE 不会兑现之前的响应。
我试过用 Firebug 调试,但没有用。用于 Firefox 的 XMLHttpRequest 对象创建成功并遍历所有代码,但没有响应。
<script language="javascript" type="text/javascript">
function processRequest() {
var signedURI = "http://api.saaspose.com/v1.0/storage/disc?appSID=myappSID&signature=mySignature";
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
if (typeof xmlhttp.overrideMimeType != 'undefined') {
xmlhttp.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert('Not supported!');
}
xmlhttp.open('GET', signedURI, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
} else {
//alert("ready state : " + xmlhttp.readyState.toString() + " status : " + xmlhttp.status.toString());
}
};
xmlhttp.send(null);
}
</script>
知道为什么这个问题出现在 Firefox 而不是 IE 上吗?
最佳答案
团队必须通过向 WCF 服务添加 JSONP 支持然后在客户端使用 jQuery 来解决这个问题,如下所示:
$(function () {
$("#disc").click(function () {
$.getJSON("http://api.saaspose.com/v1.0/storage/disc?appSID=appsid&signature=signature&callback=?", function (data) {
var items = [];
$("#discResult").append('<br/><b>Status: ' + data.Status + '</b>');
if (data.Status = 'OK') {
var discUsage = data.DiscUsage;
$.each(discUsage, function (key, val) {
items.push('<li id="' + key + '">' + key + ': ' + val + '</li>');
});
$('<ul/>', {
'class': 'my-new-list',
html: items.join('')
}).appendTo('#discResult');
}
});
});
});
谢谢大家的评论。
关于javascript - 使用 Firefox 从 JavaScript 调用 REST API 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8821683/