所以我有一个bookmarklett似乎在某些网站上不起作用。
这是发生了什么。 bookmarklett(存在于书签栏上)会触发一个javascript序列,该序列将在您当前所在的任何页面上构建包含内容的div。 一旦构造了div,它就会向我的服务器上的一个php页面发送一个ajax GET请求(也就是说,加载bookmarlett的页面在我的服务器中而不是 ,这是其他地方,ajax要求将我的服务器中的数据发送到bookmarklett加载到的网站上。)
显然,我自己没有看到这个错误,我被告知无法接收到ajax调用,因此没有动态数据传递到我构建的div中。
事件的顺序如下: 书签点击 - >在正在查看的页面上创建一个模态弹出式div - >对我的服务器运行ajax调用,传递用户的唯一ID以检索一些数据 - >然后用这个检索到的数据填充动态内容。
显然在某些网站上,ajax请求从未收到过。
有些网站会阻止我的bookmarklett通过我网站的Ajax收集数据吗? 是否有可能该网站搞砸了发送到我的服务器的请求以获得响应?
如果是这样,有什么工作吗?或者我是否需要一起抛弃它。
这就是我的ajax请求的工作原理,我没有看到它失败了,但显然它有..它可能是用户部分的错误(可能触及了一些代码)提供要与GET请求一起发送的数据,我不确定)
jquery.ajax({
type:"GET",
url:"mysite.com/api/getStuff",
data:"format=jsonp&userid=1234",
success:function(data){
// do stuff with the retrieved data
},
error:function(err, msg){
// response was not received
}
});
答案 0 :(得分:1)
XMLHTTPRequest受大多数浏览器强加的same origin policy的约束。出于安全原因,它将XHR限制为与原始页面请求相同的协议,域和端口。
如果您想要这样做,访问我提供的链接也会启动您找到解决方法。
答案 1 :(得分:1)
Crossdomain ajax请求受到限制。使用'jsonp'或'script'dataType。
请注意,“跨域请求和dataType:”jsonp“请求不支持同步操作”。更多信息可在官方jquery documentation
上找到答案 2 :(得分:0)
我从经验中知道一些mod_rewrite rulz弄乱了我的ajax请求,我想你可能在使用ajax + mod_rewrite时遇到一些问题。