向HTTP服务器发送GET请求;不要在意别人的反应

Send GET Request to HTTP Server; don't care about the response

本文关键字:别人 服务器 HTTP 请求 GET      更新时间:2023-09-26

我正在尝试使用$.get()联系服务器。我不在乎回应。我的目的是记录一些关于用户行为的数据(他们点击了什么,等等)。当用户单击某项内容时,$。Get被这样调用:

$.get(
        "http://www.some-server.com/log.txt?click=1", 
        function (data)
        {
        },
        "text"
);

服务器相应地处理get请求。当函数执行时,我得到以下错误:

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

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

使用"跟踪像素"技术:

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

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

如果您使用的是jquery,只需添加一个script标签,以避免同源策略问题:

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

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

另一种选择是加载包含json p url的图像。图像本身将被"破坏",但仍会触发GET请求。

由于同源策略不能将ajax查询发送到其他域(然后脚本执行)但你会发现,可以使用JSON但只有在服务器支持的情况下(服务器基本上是缓存JSON) $.getJson(..)是有办法的调用$.ajax(..)更简单一些

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

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

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

您可以使用纯ajax调用:

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