我試圖解析Json文件響應,但是我遇到了麻煩。如何用jsonp回調包裝json文件
我的JavaScript:
var url=encodeURIComponent("http://localhost:8080/repositories/rep_name?query=some_query&Accept=application/sparql-results+json");
$.ajax({
url: url,
type:'GET',
dataType: 'jsonp',
success: function(data, textStatus, xhr) {
// do something
$('#doQuery').html("QUERY");
},
error: function(xhr, textStatus, errorThrown) {
_UTILS.showModal("error", textStatus, 300, 100);
}
});
但我得到這個錯誤在Chrome 「未捕獲的SyntaxError:意外的標記」。我認爲,問題是,我的服務器給我的反應不是包裹JSONP回調,因爲當我檢查我的迴應,它顯示爲一個普通的JSON格式是這樣的:
{
"head" : {
"vars" : [ "child", "parent", "count" ]
}
}
的這個代替:
callback({
"head" : {
"vars" : [ "child", "parent", "count" ]
}
})
但是當我檢查從AJAX請求URL,它實際上具有「&回調=」參數添加到URL的結尾,像這樣:
http://localhost:8080/repositories/rep_name?query=some_query&Accept=application/sparql-results+json&callback=jQuery21105273823537863791_1443406558624&_=1443406558625
那麼爲什麼它仍然給我那個錯誤?
有一點需要注意的是,服務器發回一個.srj文件,但它是JSON格式,我不知道這是否與錯誤有任何關係。另外,我不能使用`dataType:'json',否則我會得到「XMLHttpRequest無法加載,沒有'Access-Control-Allow-Origin'標題出現在請求的資源上。錯誤。我不認爲我可以改變服務器。
實際上我自己運行服務器,但我對源代碼的訪問權限有限。通過執行使用嵌入式tomcat的.sh文件來運行服務器以部署.war文件。所以在這種情況下,我應該如何修改服務器? – al3xtouch