1

我正在使用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 秒后调度队列,它就可以工作。我对此感觉不太好,但它确实有效。我不确定为什么最初的调用失败了——如果可能的话,我宁愿修复根本问题,我只是不确定我是否完全理解根本问题是什么。

4

0 回答 0