2017-04-17 47 views
0

我目前正試圖在jQuery中使用OSRS api。Jquery Ajax jsonp對於無效json無效令牌錯誤,但它看起來是正確的

我之前在rails中使用過httparty,但想看看我是否可以用javascript的方式做到這一點。

但是,我似乎有一個問題解析響應的能力,儘管它顯示有效。

我的代碼可以看到下面:

// jquery Stuff 
$(document).ready(function() { 
    var url_test = "http://services.runescape.com/m=itemdb_oldschool/api/catalogue/detail.json?item=207&format=json"; 
    $.ajax({ 
    crossDomain: true, 
    dataType: "jsonp", 
    url: url_test , 
    }).done(function (data) { 
     console.log(data); 
     alert("Load was performed."); 
    }); 

}); 

這是「壞」性反應的我從中拋出未捕獲的SyntaxError的錯誤該API獲取:意外的令牌:

{"item":{"icon":"http://services.runescape.com/m=itemdb_oldschool/1492081307848_obj_sprite.gif?id=207","icon_large":"http://services.runescape.com/m=itemdb_oldschool/1492081307848_obj_big.gif?id=207","id":207,"type":"Default","typeIcon":"http://www.runescape.com/img/categories/Default","name":"Grimy ranarr weed","description":"It needs cleaning.","current":{"trend":"neutral","price":"7,338"},"today":{"trend":"negative","price":"- 20"},"members":"true","day30":{"trend":"positive","change":"+2.0%"},"day90":{"trend":"positive","change":"+8.0%"},"day180":{"trend":"positive","change":"+8.0%"}}} 

有不管怎樣,我可以正確加載這些數據。我認爲它是因爲使用jsonp,如果我在哪裏猜測。然而,我似乎無法加載api拋出json數據類型,因爲它會引發CORS錯誤。所以我有點卡住,任何幫助,這將是非常感謝!

回答

0

你要返回的是JSON,而不是JSONP。你的反應看起來像

{"name" : "Joe"} //json format 

jQuery期待這樣的事情:

jQuery42534534636363({"name" : "Joe"}) //jsonp format 

如果你確實需要使用JSONP繞過同源策略,再服需要服務器能夠實際上返回一個JSONP響應。

如果同源策略不適合你的應用程序的問題,那麼你只需要修復的dataTypejQuery.ajax電話是json,而不是jsonp

// jquery Stuff 
$(document).ready(function() { 
    var url_test = "http://services.runescape.com/m=itemdb_oldschool/api/catalogue/detail.json?item=207&format=json"; 
    $.ajax({ 
    crossDomain: true, 
    dataType: "json", 
    url: url_test , 
    }).done(function (data) { 
     console.log(data); 
     alert("Load was performed."); 
    }); 

}); 

JSONP例(一個包裝功能部件)

JSON Example

+0

有什麼辦法來解決它,因爲我不擁有它不是我的終點和httparty在鐵軌似乎服務器出於某種原因。 (格式化搞砸了)但我可以處理字符串操作。任何方式我可以得到答覆,而不是自動解析它。 – Morphasis

+0

如果你使用json,返回CORS錯誤?對? –

+0

你可以簡單地添加一個插件(允許交叉來源),或者你可以嘗試這個教程從[stackoverflow](http://stackoverflow.com/questions/5584923/a-cors-post-request-works-from-plain -javascript,但是,爲什麼,不與 - jQuery的) –