作者:QJ974 | 来源:互联网 | 2023-05-18 18:32
我在页面上添加了Google登录按钮,并使用gapi与之交互。当用户使用Google API成功进行身份验证时,我将使用JQuery对服务器进行AJAX调用:
var token = gapi.auth.getToken();
var data = {
"token": token,
"userId": googleResponse.id
};
console.log("sending data");
console.log(data);
$.post(url, data, function(response) {
window.location.reload();
}, "json").error(function(responseObj, statusCode) {
var respOnse= responseObj.responseJSON;
console.log("error");
console.log(response);
console.log(statusCode);
});
我在控制台中看到此问题:
“发送数据”
对象{令牌:对象,用户ID:“ xxxxxxxxxxxxxxx”}
错误:拒绝访问属性“ nodeType”的权限
该页面不会重新加载,并且在控制台中看不到其他信息。
我不使用JQuery来访问任何元素属性或以任何方式操纵DOM。
在Mac上,Firefox 36.0.1和JQuery 2.1.1会发生此问题,而Chrome或Safari(相同的页面,相同的代码)不会发生此问题。
编辑有帖子暗示应归咎于FireBug,因此我禁用了它并重新启动了Firefox,但这没有帮助。
1> Daniel Kats..:
我仔细研究了发送的令牌对象g-oauth-window
,从而弄清楚了这一点:令牌对象包含一个名为的字段,该字段包含对创建它的DOM对象的引用。当您在$.post
请求中传递此令牌时,JQuery会解析此字段,这会使Firefox出错。清空此字段(将其设置为null)可使一切正常!