0

当用户单击链接以使会话在该域上保持活动状态时,我需要向不同域上的页面发出请求。我不关心响应数据(状态码除外,因此可以确保页面没有关闭)。我尝试通过发出请求,$.ajax但同源策略不允许它。

使请求通过的最佳方式是什么?

我应该在我的页面上写一个 iframe 吗?脚本标签?有没有$.ajax可以让它工作的选项?

编辑:我还需要知道请求何时通过,以便之后我可以做一些事情(即,我想要一个回调)。


添加dataType: 'jsonp'某种使其工作,除了我不希望它执行站点返回的任何内容,这似乎是这样做的。我请求的页面是一个普通的旧 HTML 页面,但它会在他们的服务器上触发一些东西,使会话保持活动状态。

4

2 回答 2

1

您可以使用图像“类”发送请求:

var img = new Image();
img.onerror = img.onload = function() { console.log('Sended') }
img.src = "http://google.com?hey=google&rnd=" + Math.random() // random is used to prevent caching

但除非响应不是图片,否则您将无法获得有关资源可用性的任何信息。

另外,我不确定这个解决方案是否是跨浏览器的。它似乎在最近的 Opera 和 Chrome 中工作,但我还没有在任何其他浏览器中测试过它。

顺便说一句,这种图像方法似乎是唯一安全的方法。如果您包含脚本或加载 iframe,它们可能会对您的页面造成不良影响,而简单的图像则保持无害。

于 2013-02-05T19:12:50.713 回答
0

这似乎有效:

$('#myelement').on('click',function() {
    $('<iframe>', {src:'http://otherdomain.com/page'}).hide().load(function() {
        $(this).remove(); //clean up the DOM
        // do stuff
    }).appendTo('body');
});
于 2013-02-05T19:09:57.517 回答