将GET请求发送到HTTP服务器;不关心反应

时间:2011-11-04 20:57:26

标签: javascript jquery ajax

我正在尝试使用$ .get()联系服务器。我不关心回应。我的目的是记录一些用户操作的数据(他们点击的内容等)。当用户点击某些内容时,会调用$ .get,如下所示:

$.get(
        "http://www.some-server.com/log.txt?click=1", 

        function (data)
        {
        },

        "text"
);

服务器处理相应的请求。执行函数时出现以下错误:

XMLHttpRequest cannot load ... is not allowed by Access-Control-Allow-Origin.

如果我将数据类型更改为jsonp,我不会收到该错误但是当jquery回调尝试将日志服务器的响应评估为JSON时,它会告诉我“whatwasreturned”未定义。我无法在日志服务器上更改任何内容。

6 个答案:

答案 0 :(得分:6)

改为使用“跟踪像素”技术:

<img src="http://www.some-server.com/log.txt?click=1" height="1" width="1">

只需在需要时将HTML插入DOM即可。

答案 1 :(得分:1)

如果您正在使用jquery,只需添加脚本标记以避免同源策略问题:

$('body').append('<script src="http://www.some-server.com/log.txt?click=1"></script>');

答案 2 :(得分:0)

不确定您是否能够...如果您正在与自己的服务器通信,那么告诉JS将响应视为明文而不是尝试解码它会很简单。但是一旦你正在做JSONP,那么jquery实际上只是构建一个<script src="http://otherserver.com"></script>块并插入它,这意味着远程服务器必须响应有效的JS代码。

另一种方法是加载包含json p url的图像。图像本身会被“破坏”,但仍然会触发GET请求。

答案 3 :(得分:0)

因为你不能将ajax查询发送到其他域(然后脚本执行),但你发现你可以使用jsonp,但只有当服务器支持它时(服务器基本上包含JSON)并且有方法{{1调用$.getJson(..)

的方式更简单

http://api.jquery.com/jQuery.getJSON/

支持jsonp的服务器端(在php中)的示例:http://www.geekality.net/2010/06/27/php-how-to-easily-provide-json-and-jsonp/

答案 4 :(得分:0)

您可以继续使用JSONP,但让log.txt返回一个空的JSON对象:{}

答案 5 :(得分:0)

您可以使用纯粹的ajax调用:

$.ajax({
  url: 'http://www.some-server.com/log.txt?click=1',
  dataType: 'jsonp',
  crossDomain: true,
  success: function(data) { /* do nothing */ }
});