【发布时间】:2012-10-30 22:18:53
【问题描述】:
这就是问题所在。我正在通过 javascript/jquery 中的 ajax 调用提取 gmail 联系人,如下所示:
function getUserInfo() {
var xml_parse = "";
$.ajax({
url: SCOPE + '?max-results=9999&access_token=' + acToken
data: null,
success: function (resp) {
xml_parse = $.parseXML(resp);
callGmailHelperWebService(xml_parse);
},
dataType: "jsonp"
});
}
function callGmailHelperWebService(xml_parse) {
GmailHelperService.ConvertXMLToList(xml_parse, onSuccess, onFailed, null);
}
因此,如您所见,如果初始 ajax 调用成功,我将调用一个函数,该函数调用位于保存服务器上的 Web 服务作为我的项目(事实上,它是项目的一部分)。
我的网络服务 (GmailHelperService) 连接正确,因为我绝对可以在其他地方调用它(例如,在这个 ajax 调用之后)。但是,当我尝试在 ajax 调用的“成功”部分中调用它时,出现以下错误:
未捕获的错误:SECURITY_ERR:DOM 异常 18
我的理论是这与跨域问题有关,但我不明白为什么。我当然不知道如何解决这个问题。
如果有任何帮助,我将不胜感激。
【问题讨论】:
-
您的
dataType是"jsonp",这意味着您的数据将在成功回调中成为有效的JavaScript 对象。为什么然后将其解析为 XML?这有什么意义呢?它是一个 JavaScript 对象,而不是一个 XMLString... -
嗨,凯文,感谢您的回复。我发现这段代码隐藏在谷歌文档中的某个地方,用于实现他们的联系人 API,所以我没想到要更改它。无论如何,它传回的数据(resp)与 jsonp 相差甚远。它只是一个 xml 文档的字符串表示形式。
标签: javascript jquery ajax cross-domain