【发布时间】:2011-07-11 23:06:52
【问题描述】:
我正在编写一个应用程序,我需要从另一台服务器访问客户端的一些 json 数据。由于跨域问题,我打算使用 jsonp。 jQuery 允许我使用 $.getJSON() 方法执行此操作,但是,我无法判断该方法是否失败(即服务器没有响应或其他原因)。所以我尝试了使用 $.ajax 来获取 JSON 数据的方法。但它不起作用,我不知道该尝试什么。 这是一个显示我的问题的示例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>TEST</title>
<script type="text/javascript" src="scripts/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#button_detect').click(function(){
var feedApiAjax = 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=';
var feedApiGetJSON = 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q=';
var feedUrl = 'http://www.engadget.com/rss.xml';
$.ajax({
url: feedApiAjax + feedUrl,
datatype: 'jsonp',
success: function(data) {
console.log('$.ajax() success');
},
error: function(xhr, testStatus, error) {
console.log('$.ajax() error');
}
});
$.getJSON(
feedApiGetJSON + feedUrl,
function(data) {
console.log('$.getJSON success');
});
});
});
</script>
</head>
<body>
<div id="button_detect">CLICK ME!!!!</div>
</body>
如果您使用此代码创建一个网页并单击“Click Me” div,您将看到 $.getJSON 请求正在运行,而 $.Ajax 请求则没有。我试过放置/删除“回调=?” tg,使用了“jsonp”和“json”数据类型,但这些都不起作用。
知道我做错了什么吗?
干杯!
【问题讨论】:
-
您可能还应该仔细检查以确保
feedUrl不需要为请求进行百分比编码。