使用IE时,jQuery AJAX函数显然没有在FB应用程序中调用

时间:2011-12-02 07:41:02

标签: facebook

我在Facebook上有一个应用程序,其功能可以直接发布到朋友的墙上。它在Firefox和Chrome中运行没有任何问题,但拒绝在IE中工作。这是唯一不能在IE中运行的函数,也是目标在不同域中的唯一函数。

function post_friends() {
   var ser = $("#wall_form").serialize();
   var spl = ser.split("friend%5B%5D=");

   var token = $("#access").prop("value");
   var youtube = $("#post_youtube").prop("value");
   var shati = $("#share_title").prop("value");

   for (var i = 0; i < spl.length; i += 1) {
      if (spl[i] != "") {
         var lps = spl[i].split("&");
         var lru = "https://graph.facebook.com/" + lps[0] + "/feed";
         var atad = "name=" + shati + "&access_token=" + token;

         //as far as I can tell, this is the only part of the code that refuses to run.
         var poche = $.post(lru, atad, function(msg) {
            hide_black();
         });
      }
   }
}

这是域名问题吗?我该如何解决这个问题?感谢。

编辑:

好的,所以这是一个域名问题。需要XDomainRequest,jQuery不使用它。

编辑2:

问题解决了。

1 个答案:

答案 0 :(得分:1)

IE在执行跨域请求时使用XDomainRequest,jQuery不会使用它。现在,脚本不再使用$.post,而是首先检查所使用的浏览器是否为IE,然后相应地执行操作:

     if ($.browser.msie && window.XDomainRequest) {
        // Use Microsoft XDR
        var xdr = new XDomainRequest();
        xdr.open("post", lru + "?" + atad);
        xdr.onload = function() {
           // XDomainRequest doesn't provide responseXml, so if you need it:
           var dom = new ActiveXObject("Microsoft.XMLDOM");
           dom.async = false;
           dom.loadXML(xdr.responseText);
           hide_black();
        };
        xdr.send();
     }
     else {
        var poche = $.post(lru, atad, function(msg) {
           hide_black();
        });
     }