2013-07-15 25 views
0

三個jQuery json請求中,其中一個給出了跨域錯誤,因爲我不知道如何包含回調=? (或者真的爲什麼表示json vs jsonp)。

兩個請求相同的API,只是一個使用的參數,它是新的給我,爲什麼它的工作不是(我試過加入&回調=?和其他類似的解決方案。)

謝謝!

http://jsfiddle.net/hCWwT/10/

var names = ["athenelive", "riotgames", "aphromoo"]; 

var obj = jQuery.parseJSON('{"name": {"life": "{life}","logo": "{logo}","status": "{status}","preview": "{preview}","url": "{url}"}}'); 

wtfJSON(); 

function wtfJSON() { 

for (index = 0; index < names.length; ++index) { 

    $.getJSON("https://api.twitch.tv/kraken/channels/" + names[index] + "/?callback=?", function (json) { 

     $('body').append("Stufffff: " + obj.name.logo + "<br>"); 

     $('body').append("Name: " + json.name + "<br>"); 
     $('body').append("Logo: " + json.logo + "<br>"); 
     $('body').append("Status(title): " + json.status + "<br>"); 
     $('body').append("URL: " + json.url + "<br>"); 

    }); 

    $.getJSON("https://api.twitch.tv/kraken/streams/" + names[index] + "/?callback=?", function (json) { 
     if (json.stream !== null) { 

      $('body').append("Preview: " + json.stream.preview.medium + "<br>"); 

     } 
    }); 

    $.getJSON("https://api.twitch.tv/kraken/channels/" + names[index] + "/videos?limit=3&broadcasts=true$callback=?", function (json) { 

     $('body').append("Video Name: " + json + "<br>"); 

    }); 
} 
} 
+0

你'$ callback',而不是'&在URL callback'。 – Barmar

回答

0

看看你的控制檯:

的XMLHttpRequest無法加載https://api.twitch.tv/kraken/channels/athenelive/videos?limit=3&broadcasts=true。 Access-Control-Allow-Origin不允許產生http://fiddle.jshell.net

使用$.getJSONcallback參數實際發送JSONP請求,其中jQuery的實現僅通過創建一個<script>標籤,並採用了獨特的全球性回調。沒有它,你試圖發送一個常規的AJAX請求到其他網站,這是你的瀏覽器不允許的。

添加callback參數,它會工作:

$.getJSON("https://api.twitch.tv/kraken/channels/" + names[index] + "/videos?limit=3&broadcasts=true&callback=?", function (json) { 
+0

我已經這樣做了,它仍然表現得很怪異。這就是促成這個問題的原因。 我已經更新了小提琴顯示 – Qwiso

+0

工作對我來說:http://jsfiddle.net/barmar/hCWwT/11/ – Barmar

+0

@Qwiso:你把一個美元符號,而不是在URL的符號。 – Blender