【问题标题】:Call the first string from json [duplicate]从json调用第一个字符串[重复]
【发布时间】:2013-01-23 13:59:22
【问题描述】:

这是“维基搜索”和回调“维基百科”的维基百科链接。

http://en.wikipedia.org/w/api.php?action=opensearch&search=wiki&callback=wikipedia

我使用类似下面的东西

function wikipedia(w){
   alert(w)
}

这给了我自动建议,但它给了我完整的代码。是否有任何javascript代码可以调用,例如这个json的第一个结果。

我尝试过很多类似的方法

w[1]
w.wiki[0]

但没有成功。

【问题讨论】:

  • 该链接显示了一个功能维基百科(数据);您的代码中的“w”是否意味着与函数和所有数据相同的数据?
  • 还找到了为什么我得到错误“Uncaught TypeError: Cannot read property '1' of undefined”,那是因为代码写得不好并且函数被调用(两次)一个是在数据来自维基百科

标签: javascript html ajax json jsonp


【解决方案1】:

试试这个

function wikipedia(w) {
    "use strict";
    var j = w;//JSON.parse(w); as commented, no need to parse.
    alert(j[1]);
}

如果你不使用 jQuery。

【讨论】:

  • 由于是 JSON-P,w 实际上不是包含 JSON 的字符串,而是已经是一个对象。请看一下链接。
【解决方案2】:

如果 w[1] 像您说的那样抛出该错误,则您的代码可能还有其他问题。如果你可以使用 jQuery,我强烈推荐它用于 jsonp。这段代码可以满足您的要求:

http://jsfiddle.net/Hg4KJ/

$.ajax({
    url: 'http://en.wikipedia.org/w/api.php?action=opensearch&search=wiki&callback=wikipedia',
    dataType: 'jsonp',
    callback: 'wikipedia'
}).done(function(w){
    var items = w[1];

    for(var i = 0, il = items.length; i < il; i++){
        console.log(items[i]);
    }
});

【讨论】:

    【解决方案3】:

    建议列表在w[1] 中可用,您需要遍历该列表才能对其进行处理。

    【讨论】:

    • @Amden 那么真正的问题是w 是未定义的吗?
    【解决方案4】:

    你必须把这个JSON字符串解析成一个对象,如果你知道jQuery你可以试试this

    【讨论】:

    • 原生JSON.parse有什么问题?
    • 就像@Kolink提到的,你可以使用JSON.parse,我只是没有意识到它已经实现了
    • 由于是 JSON-P,w 实际上不是包含 JSON 的字符串,而是已经是一个对象。看看链接吧。
    • true,这里是工作示例:http://jsfiddle.net/5qUFF/
    • 正是我想要的,谢谢大家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多