使用jsonp调用函数

时间:2012-06-24 05:28:12

标签: javascript jquery

我有一些html5 postMessage代码:

    window.addEventListener("message", FA.recieveMessage, false);

该侦听器调用此函数:

FA.recieveMessage = function(e){
if (e.data == "closeFA"){
            console.log("Type of data: "+e.data);
}
};

现在在ie8上这段代码不起作用,因为它不支持html5消息传递。所以我想如果有办法通过发送jsonp类型的ajax请求来调用该函数?

有没有办法用jsonp模拟消息传递?

如果我确实将jsonp请求发送到另一台服务器,是否意味着它是一个新请求而且它不会知道现在触发的所有事件?

更新

好的,这就是我想要的。我想关闭一个iframe。所以在一个页面上,我有这个javascript:

        $.ajax({url:      'http://api.apps.com/html/'+FA.appID,
      data:      {},
      dataType: 'jsonp',
      timeout:  10000,
      jsonp: "closeIFrame"
      });

这应该指示apps / html页面调用closeIframe函数是吗?

function closeIFrame() {
    jQuery("#fa-iframe-container").fadeOut(300, function(){ jQuery(this).remove(); });
FA.bannerShown = false;

}

1 个答案:

答案 0 :(得分:1)

从技术上讲,您可以使用jsonp模拟消息传递,每次调用都将是一个新请求,但会话将可用,因此jsonp服务可以是状态感知。

更新

根据我的经验,您不会在文件中调用函数,而是每个文件代表一个函数,因此您可能拥有以下服务:

http://example.com/add?message=hello

http://example.com/get