【问题标题】:JSON data, and the URL for the Ajax CallJSON 数据和 Ajax 调用的 URL
【发布时间】:2014-02-13 10:47:21
【问题描述】:

大家晚上好,

我正在尝试通过魔兽世界社区 API 检索 JSON 数据。我有一个正常运行的程序,可以从以下代码 sn-p 中的 URL 中检索所有数据,它实际上会提醒我的角色名称。

<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Wreckedified Raiding</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script>
        $(document).ready(function(){
            $.ajax({
                "url":"http://us.battle.net/api/wow/character/aerie-peak/Eldershield?jsonp=myCallback",
                "type":"GET",
                "dataType":"jsonp",
                "contentType":"application/json",
                "jsonpCallback":"myCallback",
                "success":function(data){
                    console.log(data);
                    alert(data.name);
                }               
            })
            alert("Hello World!");
        });
    </script>
</head>

但是,我真正想要的数据是 JSON 格式,位于以下 URL:

http://us.battle.net/api/wow/character/aerie-peak/Eldershield?fields=items

我的问题是:当我还需要附加 ?jsonp=myCallback 时,我应该如何在我的 Ajax 调用中格式化这个 URL?

我想要在该链接上找到诸如“averageItemLevel”:562 之类的信息,但无法使用该 URL:

"url":"http://us.battle.net/api/wow/character/aerie-peak/Eldershield?fields=items?jsonp=myCallback"

我确信有一个简单的解决方案涉及 URL 中的?

感谢大家的宝贵时间,并提前感谢您的帮助。

【问题讨论】:

  • 您使用&amp; 分隔参数,而不是?
  • ^^^如果您在设置调用时使用data 参数,jquery 会自动为您执行此操作

标签: javascript ajax api jsonp


【解决方案1】:

以正确的方式格式化您的查询字符串Read This 并回答您的问题check this out。 简而言之,您开始使用? 添加参数,然后构建它们并使用&amp; 继续添加。当我阅读网址时,我将 ? 阅读为 where&amp; 阅读为 and

DOMAIN.come/pagename.ext?para1=val1&amp;para2=val2&amp;para3=val3

但是由于您要使用 JQuery 进行 AJAX 请求,它允许您将所有参数添加到 ajax 对象,并且它将使用data 参数为您构建它。

例子:

$.ajax({
        "url":"http://exampleSite.com/request.php",
        "type":"GET",
        "data": {"para1":"val1","para2","val2", "para3","val3" },
        "dataType":"jsonp",
        "success":function(data){
            console.log(data);
        }               
    })

如果你检查你的开发者工具,你会发现浏览器发出了这个请求

http://exampleSite.com/request.php?para1=val1&para2=val2&para2=val2

【讨论】:

  • 谢谢 Mohammed,总结得非常好,适合我这个级别的人。
  • @Bonedancer 很高兴为您提供帮助。请记住,您还可以使用 ajax 对象中的“数据”来发出 POST 请求,如果适合您,jquery 将形成。
【解决方案2】:

使用data 选项指定AJAX 调用中的参数。 jQuery 会正确地将它们添加到 URL 中。

        $.ajax({
            "url":"http://us.battle.net/api/wow/character/aerie-peak/Eldershield?jsonp=myCallback",
            "type":"GET",
            "data": { fields: "items" },
            "dataType":"jsonp",
            "contentType":"application/json",
            "jsonpCallback":"myCallback",
            "success":function(data){
                console.log(data);
                alert(data.name);
            }               
        })

如果你想自己做,URL应该是:

http://us.battle.net/api/wow/character/aerie-peak/Eldershield?fields=items&jsonp=myCallback

? 用于将参数与脚本名称分隔,&amp; 用于分隔每个参数。

【讨论】:

  • Barmar,您当然已经设法清除了我的错误,我肯定会将此答案标记为正确。如何更深入地了解 JSON 数据?当我提醒任何第一个键/值组合(例如名称)时,它可以工作,但是当我尝试提醒“项目”中的某些内容时,例如装备项目级别,我仍然没有看到结果?,(我尝试了警报( data.items.averageItemLevel))
  • 我在结果中看不到 equippedItemLevel。我看到data.items.averageItemLevelEquipped
  • 从 0 到 100,你是 95,我是 6。我将命名我的下一个孩子 Barmar。再次感谢您的时间和帮助,我很抱歉他们允许像我这样的年轻朋克在这里!我在学习!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2017-06-05
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
相关资源
最近更新 更多