2013-06-18 26 views
0

我從來沒有用過python。因此,我有點困惑。我正在嘗試使用python腳本從教育API獲取數據。我不確定我將如何完成這一任務。我有以下python腳本:python腳本的回調

#!/usr/bin/python 

# Import modules for CGI handling 
import cgi, cgitb 
import urllib2 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

#download data from request parameter 'url' 
print "Content-type:text/xml\r\n\r\n" 
url = form.getvalue("url") 
callback = form.getvalue("callback") 
req = urllib2.Request(url) 
response = urllib2.urlopen(req) 
data = response.read() 
print callback + "(" + data+ ")" 

我知道我會用我請求數據的網站的網址替換此文本中的網址。但是,我用什麼替換回調?

我也明白我會需要做一個Ajax調用來檢索我的瀏覽器中的JSON數據。我將如何做到這一點?

我不得不返回JSON的代碼如下:

$.ajax({ 
url : "getData.py", 
data : {url : "http://api.education.com/service/service.php?f=schoolSearch&key=mykey& 
sn=sf&v=4&city=Atlanta&state=ga&Resf=json"}, 
complete : function(xhr, result) { 
if (result != "success") 
return; 
var response = xhr; 
console.log(var); 
+1

如果您以前從未使用Python,我強烈建議先編寫一個獨立的程序來訪問API,然後嘗試將其封裝在CGI中。 (實際上,我根本不會使用CGI;現代WSGI更簡單,更強大,並且還有更多最新的教程來幫助您開始使用。) – abarnert

+0

同時,不清楚您的代碼應該是什麼做。給我們一個指向您複製和粘貼的任何教程或示例的鏈接,我們可以猜測應該發生什麼。沒有這一點,這是不可能的。 – abarnert

回答

0

這看起來像普遍使用一個參考JSONP語法繞過跨域安全限制,即是瀏覽器的一部分。你可以認爲這是按以下格式的交互:

standard request: 
    url => json payload 

jsonp request: 
    url?callback=something => something(json_payload) 

jQuery將通常填充回調參數爲你,如果你通過了

dataType: "jsonp" 

標誌你的Ajax請求,因爲這說明文檔:http://api.jquery.com/jQuery.ajax/

所以你對回調參數的問題的答案是「任何你想要處理響應的方法」。這在JavaScript環境中嚴格使用,無需中間人的利益就可以跨域進行請求。如果您使用Python代理來發出此請求(您可能會這樣做),那麼您可以關閉回調參數以檢索標準json數據有效負載並將該值返回給請求客戶端。