2011-11-04 140 views
3

我试图用$ .get()联系服务器。我不在乎回应。我的目的是记录有关用户操作的数据(他们点击了什么等)。当用户点击某个东西时,$ .get被这样调用:发送GET请求到HTTP服务器;不关心响应

$.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日志服务器的响应,它告诉我“whateverwasreturned “ 没有定义。我无法更改日志服务器上的任何内容。

+0

服务器是否返回任何数据?你说你不关心这个反应,有点混淆你的目标是在这里。 –

+0

你见过这个问题吗?http://stackoverflow.com/questions/3595515/xmlhttprequest-error-origin-null-is-not-allowed-by-access-control-allow-origin – Nathan

回答

6

使用 “跟踪像素” 技术,而不是:

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

需要时只需插入HTML到DOM。

+1

确保你检查你的页面是否处理https,你需要更改src attr为https以及(如果只有该网站有ssl) – ysrb

+0

我使用方法$(“body”)。append(“”),并看到ping在wireshark为第一个行动,但不是任何后续行动。 – SemperFly

+1

您需要“加盐”URL以中断缓存。 使用?click = 1&now =“+ new Date() –

0

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

一种替代方法是加载包含您的json p url的图像。图像本身会“破碎”,但仍会触发GET请求。

1

如果你使用jQuery,只需添加一个脚本标记,以避免同样的原产地政策问题:

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

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

0

您可以使用纯Ajax调用:

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

感谢您的回应。这仍然导致“返回”未定义的错误。 – SemperFly

相关问题