![](/img/trans.png)
[英]Prevent Cross Site Request Forgery for JSONP request from a static website with an enquiry form (i.e. Jekyll website)
[英]Can I use a static (i.e., predetermined) callback function name when requesting JSONP with jQuery?
jQuery文檔列出了以下使用$ .getJSON請求JSONP的示例:
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
function(data) {
$.each(data.items, function(i,item) {
$("<img/>").attr("src", item.media.m).appendTo("#images");
if (i == 3) return false;
});
});
而不是使用此方法,因為此參數生成動態回調函數名稱:
jsoncallback=?
我希望能夠事先將其設置為硬編碼的函數名稱,如下所示:
jsoncallback=test
這是有效的,因為我運行腳本和我得到的JSONP將JSON對象包裝在對test()的調用中。
但是,我無法弄清楚如何設置回調函數。 它應該不是這么簡單嗎?
function test(data) {
console.log(data);
}
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=test");
當我嘗試這個時,我得到了包含在test()中的JSONP,但是我定義的函數test()從未被調用過。 我錯過了什么嗎?
謝謝你的幫助!
啊,“相關”側欄欄節省了我這里。 在我提交這個問題之后,我發現了一個類似的問題:
使用命名函數作為jQuery中$ .getJSON的回調來滿足Facebook請求簽名要求
鄧肯10月15日的回答為我解決了這個問題:
window.fixed_callback = function(data){
alert(data.title);
};
$(function() {
$.getScript("http://api.flickr.com/services/feeds/photos_public.gne?tags=cats&tagmode=any&format=json&jsoncallback=fixed_callback", function(data) {
alert('done'); } );
});
我猜關鍵是使用$ .getScript而不是$ .getJSON。 仍然可以在$ .getScript方法的參數中指定匿名回調函數,該函數將在請求URL參數中指定的回調函數之后執行(在本例中為“fixed_callback”)。 希望這有助於有人在路上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.