簡體   English   中英

顯示JSON不起作用

[英]Displaying JSON won't work

看看這個小提琴: http : //jsfiddle.net/3JRU6/

$(document).ready(function(){
var url='http://api.worldbank.org/topic/4?per_page=10&format=json&callback=?';
var query;
  $('button').click(function(){
    $.getJSON(url,function(json){
      $.each(json.results,function(i,data){
          window.alert("found");
         $("#results").append('<p>'+data.value+'</p>');
      });
    });
  });
});​

我想連接到世界銀行的開放數據,但是當我按下按鈕時,什么也沒發生。 我已經使用twitter API嘗試了相同的腳本,然后它確實起作用了。 原始鏈接沒有&callback =? 但是我必須添加它,因為出現錯誤。

提前致謝!

如果URL包含回調屬性,則getJSON方法將進行JSONP調用。

“如果URL包含字符串“ callback =?”(或類似值,如服務器端API所定義),則該請求將被視為JSONP。”

參考: http : //api.jquery.com/jQuery.getJSON/

該請求工作正常,數據到達瀏覽器,但是由於響應是JSON而不是JSONP,因此僅丟棄數據,並且不會調用成功回調方法。

我試圖將URL中的format=json更改為format=jsonp ,但是響應是一條錯誤消息:

<fault>
        <faultstring>Fault raised in a policy</faultstring>
        <detail>
            <errorcode>31326</errorcode>
                <trace>
                    Fault Name: JSONP Bad Request
                    Error Type: MessageRouter
                    Description: Fault raised in a policy
                    Service: worldbank
                    Endpoint: target
                    Operation (Target):defaultOperation
                    FlowTransitionState : Target_Request_User_Error
                    Policy : EnforceMediationOnRequestPolicy
                    RaiseFaultAssertion
                </trace>
        </detail>
</fault>

您必須與API提供者聯系,以了解如何發出JSONP請求而不是JSON請求。

編輯:

正如Jimmy Oliger所說,API使用prefix屬性而不是callback 我試過了,jQuery實際上使用了該屬性,然后調用了成功回調。

響應是一個數組,其中第一項是分頁信息,第二項是包含數據的數組,因此循環json[1]以顯示數據:

演示: http : //jsfiddle.net/Guffa/3JRU6/4/

var url = 'http://api.worldbank.org/topic/4?per_page=10&format=jsonp&prefix=?';
var query;
$('button').click(function() {
    $.getJSON(url, function(json) {
        $.each(json[1], function(i, data) {
            $("#results").append('<p>' + data.value + '</p>');
        });
    });
});

Wordbank API不使用callback屬性將響應輸出為JSONP ,您必須添加format=jsonP&prefix=? 在網址末尾使其有效。

您可以在此處找到有關“請求格式”的更多信息。

var url = 'http://api.worldbank.org/topic/4?per_page=10&format=jsonP&prefix=?';

$.getJSON(url, function(data) {
  console.log(data);
});​

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM