2012-02-01 62 views
0

我有這樣的結果:WikiMedia API可以返回無效的JSON嗎?

["asd", 
    ["Asda","ASDIC","ASD","AsDB","Asdr\u00fabal Cabrera","Asdhoo","\u00c1sd\u00eds Hj\u00e1lmsd\u00f3ttir","Asdr\u00fabal Fontes Bayardo","ASD CF Bardolino Verona","ASD Fiammamonza"] 
] 

http://en.wikipedia.org/w/api.php?&search=asd&action=opensearch&format=json

檢索時使用jQuery的方法的getJSON它不能分析上述JSON。爲什麼?

+3

它工作正常的我。 「無法解析」是什麼意思?究竟發生了什麼?也許它因爲[相同的原產地政策](http://en.wikipedia.org/wiki/Same_origin_policy)而失敗?或者與解析無關的其他原因? – svick 2012-02-01 12:53:34

回答

3

@jakeclarkson是正確

我認爲這是一個更好的方式來做到這一點:

 function onSuccess(data) { 
      alert(data); 
     } 

     function onError(data) { 
      alert(data); 
     } 

     $.ajax({ 
      url:"http://en.wikipedia.org/w/api.php", 
      dataType: 'jsonp', 
      jsonp: 'callback', 
      timeout: 5000, 
      data: 'search=asd&action=opensearch', 
      success: onSuccess, 
      error: onError 
     }); 
+0

感謝哥們它幫了我這麼多 – ag0702 2012-02-01 13:24:28

1

如您在jQuery.getJSON()中所寫的那樣調用URL將導致錯誤,原因是上述評論中提及的svick提及的相同原產地政策。

您需要做的是將&callback=?添加到您的網址。這將迫使jQuery使用JSONP。請參閱http://api.jquery.com/jQuery.getJSON/的JSONP部分。下面應該工作:

$.getJSON("http://en.wikipedia.org/w/api.php?&search=asd&action=opensearch&format=json&callback=?", function (data) { 
    console.log(data); 
}); 
+0

非常感謝你 – ag0702 2012-02-01 13:27:56

+0

很高興幫助:-) – jabclab 2012-02-01 13:29:47