以下是适用于Safari的AJAX方法,但不适用于Chrome。错误信息如下。
$(document).ready(function(){
$('.infobutton').click(function(){
$.ajax({
url: 'http://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm',
data: {
'mainSearchCriteria.v.cs': $(this).attr('data-code-system'),
'mainSearchCriteria.v.c': $(this).attr('data-code')
},
dataType: 'xml',
async: false,
method: 'GET',
success: function(data){
console.log('success');
console.log(data);
},
done: function(data){
console.log('done');
console.log(data);
},
error: function(data){
console.log('error');
console.log(data.error());
}
});
});
});
控制台输出提供statusText
回调中的error
,如下所示:"Error: NetworkError: DOM Exception 19"
。 This link讨论了DOM异常19,但只是说NETWORK ERROR
。没用。
我从其他研究中了解到Chrome已经知道安全性,XSS等问题。
我在this SO帖子以及this one中尝试了所有建议。没有运气。
直接使用该查询字符串的URL工作。您可以查看here。
另请注意,这不是应用程序的一部分。 html实际上只是<button class="infobutton">Click Me</button>
。这只是使AJAX工作的概念证明。
更新
我还可以确认我在本地(使用file:///
协议)和远程工作在开发服务器上都会收到同样的错误。
答案 0 :(得分:1)
您需要设置crossDomain: true
,并在您的域上设置位置重定向,以指向nih.gov网址。
解决限制的方法之一是在策略允许的域上启动请求。换句话说,它必须与发出请求的JavaScript位于同一个域中。然后,您的页面可以将请求重定向到另一个域。
本地网页示例
<?php
// http://yourdomain.com/some/url/redirect.php
header("Location: http://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm");
?>
然后,用http://yourdomain.com/some/url/redirect.php
替换JavaScript中的网址。这种影响是规避您正在经历的问题。
答案 1 :(得分:0)
您是否尝试过Fiddler2 -great工具进行调试