我遇到了以下问题。
我正在使用Phonegap
开发一款应用,我在Blackberry上调用AJAX
时遇到了一些问题。
当我使用datatype = 'xml'
调用ajax服务时,它在Windows Phone和Android上工作正常,但在Blackberry上失败了。
这是代码:
jQuery.ajax({
url: requestedUrl,
dataType: 'xml',
timeout: this.timeout,
beforeSend: _.bind(this.beforeSendCallback, this),
success: _.bind(this.internalSuccessCallback, this),
error: _.bind(this.internalErrorCallback, this),
headers: {'X-Requested-With': 'XMLHttpRequest'}
})
我在其他帖子上看到,你不能对外部域做XMLHttpRequest
,这是Blackberry显示的错误(但我不明白为什么它在其他两个平台上有效。)所以我尝试将dataType更改为'jsonp',但会出现一个syntaxError。我尝试使用jsonp text xml
,但出于某种原因,它没有并返回相同的
Uncaught SyntaxError: Unexpected token <
看,WS的响应,它给了我一个有效的XML
。所以问题是,
如果我使用jsonp
拨打电话,我该如何使用该XML?
编辑:
实际上,问题是“origin”标题是“local:\”(我的应用),因此BB阻止了响应的内容。
解决方案是将该域添加到我的config.xml
,如下所示:
<access uri="local:///" subdomains="true" />
与Android和Windows Phone不同,在config.xml
中,您必须使用uri设置对域的访问权限,而不是来自BlackBerry 10上的XmlHttpRequest(XHR)的*通配符。