我正在使用easyXDM 2.4.17。我已经使用远程“tunnel.html”设置了 RPC,它使用 jQuery 进行 AJAX 调用。
对于所有现代浏览器(带有 postMessage 的浏览器),一切正常。当我在 ie7 easyXDM 上进行测试时,它会退回到 HashTransport,除了我从未看到 AJAX 响应外,一切仍然正常。我可以看到请求实际上恢复得很好,但我的回调从未因某种原因被触发。
我的 tunnel.html 文件如下所示:
<!DOCTYPE html>
<html>
<!--[if lt IE 9]>
<script type="text/javascript" language="javascript" src="https://mydomain.net/json2.min.js"></script>
<![endif]-->
<script src="https://mydomain.net/easyXDM-2.4.17.js"></script>
<script src="https://mydomain.net/jquery-1.10.2.min.js"></script>
<script>
function apiTunnel (endpoint, params, method, callback) {
var options = {
url: endpoint,
data: params,
type: method,
complete: function (xhr) {
var response = {};
try {
response.data = JSON.parse(xhr.responseText);
} catch (ex) {
response.error = xhr.responseText;
}
callback(response);
}
};
jQuery.ajax(options);
}
var rpc = new easyXDM.Rpc({}, {local: { apiTunnel: apiTunnel }, serializer: JSON});
</script>
</html>
更新:经过一些调试后,我的响应似乎卡在了队列中。隧道端在来自主机页面的图像上失败。这会阻塞队列并且永远不会让我的 AJAX 响应通过。有任何想法吗?
更新 2如果我设置一个计时器来删除等待锁并在 2 秒后调度队列,它就可以工作。我对此感觉不太好,但它确实有效。我不确定为什么最初的调用失败了——如果可能的话,我宁愿修复根本问题,我只是不确定我是否完全理解根本问题是什么。