【问题标题】:Difficulty with showing JSONP results in HTML难以在 HTML 中显示 JSONP 结果
【发布时间】:2011-12-31 03:14:08
【问题描述】:

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

任何帮助将不胜感激。

以下代码:

注意: //JSON 结果的示例 { “名称”:“约翰·多伊”, "url": "http://www.adomain.com", "created": "A DATE HERE" }

<!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"}}]}); 

我这辈子都想不通。

【问题讨论】:

    标签: javascript json cross-domain jsonp


    【解决方案1】:

    选择器 showdata 将匹配您想要的 &lt;showdata&gt; #showdata

    【讨论】:

    • 哦,我忘了包括 JSON 的样子。 ?({"post":{"ulore":"k6ih7a","url":"http:\/\/somedomain.com\/index.html","created":"2011-07-13 05:31 :34"}});
    【解决方案2】:

    您可能应该使用开发者插件或例如通过您的浏览器发送 HTTP 请求。 Fiddler。您经常会看到 HTTP 响应代码,这些代码可能会告诉您更多信息,而不仅仅是空白屏幕 :) 例如,可能是授权问题。

    【讨论】:

      【解决方案3】:

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

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

      试试这个语法..

      谢谢

      【讨论】:

      • 大家好,首先非常感谢。你们是最棒的。特别感谢 Abhishek Bhalani。我一直都想念那一件事。现在事情差不多了。还有一个小问题。结果出现在屏幕上,但它们显示为.... ulore=undefined url=undefined created=undefined 例如,data.ulore 的值不会被显示。有什么特别的原因...再次感谢,非常感谢。
      • 还有一点。如果我提醒 JSONP 的结果,例如alert(data.post) 它将显示对象 Object 其他所有内容都显示为未定义。
      • 尝试使用 print "console.write(data);" , "console.write(data.post);"或者你能给我你用来调用响应的webservice方法吗?所以会很清楚。
      • 或者您可以尝试使用“data.post.url”我认为每个属性都设置在 post (Root) 元素中..
      【解决方案4】:

      好的,我明白了。我发现了问题。如果你们还记得我发布的 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>");
      });
      

      【讨论】:

        猜你喜欢
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多