难以在HTML中显示JSONP结果

时间:2011-12-30 09:59:30

标签: javascript json cross-domain jsonp

这让我发疯了。我写了一个php api文件并将其存储在我的服务器上。当我直接运行url时,JSON结果完美地回显到屏幕上,没有任何问题。但是,当我尝试从另一个域(例如跨域)访问结果时,我无法获取要显示的值。屏幕仍然是空白的。我希望这是有道理的。我想知道下面的javascript调用是否有问题。这真的成​​了皇室的痛苦。

任何帮助将不胜感激。

以下代码:

注意: // JSON结果的示例     {     “名字”:“John Doe”,     “url”:“http://www.adomain.com”,     “创造”:“这里的日子”     }

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "      
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<html>
<head>
<title>API JSON Test</title>
<script type="text/javascript"    
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function(){
var timeService = "http://api.MYDOMAIN.com/api.php?  
key=abc&num=1&format=json&callback=?";

$.getJSON(timeService, function(data) {
$('showdata').html("<p>ulore="+data.name+" url="+data.url+" created="+data.created+"   
</p>");
});
});
</script>
<div id="showdata"></div>
</body>
</html>

我真的很感激任何有帮助的回应。这对我来说很奇怪。在我的远程服务器上,一切都很好。我已成功将其编码为JSONP并具有有效结果。但是,每次我尝试访问JSONP结果时 - 无论是来自同一域还是跨域,屏幕都是空白的。我已经尝试了100万种不同的东西,现在已经有几天了。我一直在阅读论坛等,没有其他人似乎有这种问题,而不是我有这个问题的程度。请注意,下面是JSONP的样子:

?({"posts":[{"post":{"name":"Mike     
Jones","url":"http:\/\/aweburl.com","timestamp":"2011-12-08 09:48:04"}}]}); 

对于我的生活,我无法弄清楚这一点。

4 个答案:

答案 0 :(得分:0)

选择器showdata将匹配您想要<showdata>

#showdata

答案 1 :(得分:0)

你应该听一下浏览器使用开发者插件发送的HTTP请求,例如Fiddler。通常你会看到HTTP响应代码可能会告诉你更多只是一个空白的屏幕:)例如,可能是授权问题。

答案 2 :(得分:0)

在结果中附加HTML存在问题。
它应该是这样的:

$.getJSON(timeService, function(data) {
$('#showdata').html("<p>ulore="+data.name+" url="+data.url+" created="+data.created+"   
</p>");

尝试使用此语法..

由于

答案 3 :(得分:0)

好的,我明白了。我发现了这个问题。如果你们能记住我发布的JSONP结果......那么我的javascript代码是有缺陷的。经过一番检查后,我改为以下....

我的变量不正确。所以我改变了,例如,从data.url改为date.post.url,它就像一个魅力。这几天我学到了很多东西。再次感谢你的帮助。 :)

$.getJSON(timeService, function(data) {  
  $('#showdata').html("<p>ulore="+data.post.ulore+" url="+data.post.url+
  "created="+data.post.created+"</p>");
});