var resturl = "http://example.com";
cj.getJSON(
resturl + "&callback=?",
function(data)
{
console.log(data);
}
);
我的回調函數永遠不會被調用。有任何想法嗎?這裏如何從jQuery中的外部URL獲取數據?
var resturl = "http://example.com";
cj.getJSON(
resturl + "&callback=?",
function(data)
{
console.log(data);
}
);
我的回調函數永遠不會被調用。有任何想法嗎?這裏如何從jQuery中的外部URL獲取數據?
兩件事情:
首先您的網址additon應該"?callback=?"
因爲沒有其他的查詢字符串,或者使用全$.ajax()
呼叫與jsonp
數據類型,因此它增加了需要的查詢字符串,像這樣:
$.ajax({
url: resturl,
dataType: 'jsonp',
success: function(data){
console.log(data);
}
});
其次,您要支持的域名必須支持JSONP。
@庫爾德 - 很好聽,你有其他問題嗎? – 2010-09-02 17:13:29
只是好奇我的要求是不顯示在螢火蟲.. – 2010-09-02 17:27:34
@庫爾德 - 它不會顯示在XHR下,它會顯示爲正常的腳本請求,因爲它是JSONP。 – 2010-09-02 17:33:13
這應該只要在服務器端發送的數據,並使用JSONP
var resturl = "http://example.com";
$.getJSON(resturl,{"callback":"?"},function(data, textStatus){ console.log(data)});
這並沒有工作:(嘗試其他.. – 2010-09-02 17:02:40
根據文檔回調僅在成功執行工作。所以一般的請求可能會失敗。構造的URL也不包含有效的查詢字符串。你開始查詢字符串與?
,但你的URL只包含一個&
這表明額外的查詢字符串參數:
回調(數據,textStatus)如果請求成功時執行的回調函數。
http://api.jquery.com/jQuery.getJSON/
但我不知道,如果額外JSONP選項更改一些關於這一政策。
請記住,jquery將執行您的回調作爲一個函數,所以你必須確保你的服務器返回的JSON包裝爲回調。
這是一個非常簡單的工作示例。
的Javascript:
var myURL = "http://www.someserver.com/somegreatapplication.php?callback=?";
$.getJSON(myURL, function(data) {
$("#somediv").html(data.htmlCode);
});
somegreatapplication.php
<?php
$output['htmlCode'] = "<b>This worked!</b>";
// Properly format the jsonP response //
$json = json_encode($output);
header("Content-type: application/json");
exit($_GET['callback'] . ' (' . $json . ');');
?>
注意,PHP將不會返回原始JSON代碼就像你可能習慣了,但實際上將返回回調函數,包括JSON。 jQuery將變成您的網址是這樣的:
http://www.someserver.com/somegreatapplication.php?callback=jsonp1283446768493&_=1283446768526
你的PHP然後會輸出這樣的:
即得到運行,則該對象可以在自己的getJSON內(jsonp1283446768493({"menuHTML":"<b>This worked!</b>"});
。 .. function(){});
所有這些當然都假設你正在控制通信的兩端。如果你不這樣做,那麼你需要確保另一端給你正確的JSONP輸出(如果他們強制這樣做,你可能需要使用一個特定的回調函數)
'$ .getJSON(menuURL,function(data){'應該'$ .getJSON(myURL,function(data){' – Benjamin 2015-04-24 12:00:39
你檢查過請求是否成功嗎? – 2010-09-02 16:46:23
用螢火蟲測試你的頁面會顯示問題。 – Arman 2010-09-02 16:49:00