2013-04-11 55 views
3

我是新來JSONP,下面是我的情況:

我用PHP寫一個js文件與JSON內容前端閱讀,我想通過以下方式和它的作品。

但是,我想問

A)是有必要包括jsoncallback()來包裝album.jsJSON內容?

B)使用$.getScript()來讀js文件是否包含跨域的JSON內容很好嗎?

由於

1.代碼來加載JS文件

$.getScript("http://127.0.0.1:8080/album.js") 

function jsoncallback (data){ 
    $.each(data, function() { 
     console.log($(this)) 
    }) 
} 

2. album.js內容

jsoncallback([{ 
     "id": "23", 
     "author": "roy", 
     "email": "a", 
     "age": "0", 
     "tel": "1", 
     "title": "test", 
     "image_name": "Lighthouse.jpg", 
     "image_type": "image\/jpeg", 
     "image_size": "561276", 
     "status": "1", 
     "create_date": "2013-04-03 14:39:32", 
     "modify_date": "2013-04-09 19:25:07" 
    }, { 
     "id": "22", 
     "author": "roy", 
     "email": "a", 
     "age": "0", 
     "tel": "1", 
     "title": "test", 
     "image_name": "Desert.jpg", 
     "image_type": "image\/jpeg", 
     "image_size": "845941", 
     "status": "1", 
     "create_date": "2013-04-03 14:39:29", 
     "modify_date": "2013-04-09 19:25:02" 
    } 
]) 
+0

它是確定,但最好是通過回調函數作爲參數的名稱,讓你的代碼重用能力。如果你使用jquery,我會使用包含的jsonp功能,因爲它有一個超時選項和每個請求回調的可能性。 – 2013-04-11 05:05:27

回答

1

A和B:是。這是JSONP的工作原理。

你可以把它重新寫成這樣:

$.ajax({ 
    url: "http://127.0.0.1:8080/album.js", 
    jsonpCallback: "jsonpcallback", 
    jsonp: false, 
    dataType: "jsonp" 
}).done(function(data){ 
    console.log(data); // array of objects 
}); 
+0

它的工作原理,謝謝。但是你知道爲什麼你的腳本可以放在'$(document).ready'裏面並且運行成功,而且我的腳本不能放在'$(document).ready'裏面,因爲它會有js錯誤'TypeError:jsoncallback不是一個函數? – 2013-04-11 06:22:16

+1

@CharlesYeung因爲你的要求函數是全局的。 Mine讓jQuery爲我創建了這個全局函數。如果你修改你的'window.jsonpcallback =函數(數據){...'它會工作。 – 2013-04-11 06:30:17

+0

感謝您的信息,它可以添加'window.jsxxxx'。 – 2013-04-11 06:37:38

相關問題