2013-06-19 50 views
0

現在,我試圖從education.com API訪問數據。但是,我仍然無法這樣做。

基本上,據我所知,我應該使用這個python腳本來抑制瀏覽器的跨域限制。 python腳本被稱爲getData.py,我使用下面的代碼。逐字:

#!/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+ ")" 

然後,我需要通過$ .getJSON在我的JavaScript/jQuery代碼中調用python腳本。我的教授說我需要傳遞教育API的網址,並且回電給這個腳本。我不確定我會如何做到這一點。我將如何做到這一點?我的回撥是什麼?這是我的jQuery代碼。我從網址中刪除了我的密鑰以獲得隱私。它被替換爲mykey

$.getJSON("getData.py", { url: "http://api.education.com/service/service.php? 
f=schoolSearch&key=mykey&sn=sf&v=4&city=Atlanta&state=ga&Re 
sf=json"}, function(data) { 
console.log(data); 
}); 
}); 
+0

你運行一個本地Django的服務器或東西嗎?我看不到你的瀏覽器如何以這種方式運行python腳本。 – jedwards

+0

是的,我使用python運行本地服務器-m CGIHTTPServer – user2495586

回答

0

將檢索到的數據序列化爲json。

#!/usr/bin/python 

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

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

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

在url中包含callback=?。 (http://api.jquery.com/jQuery.getJSON/

<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      var jsonp_url = "cgi-bin/getData.py"; 
      var url = "http://api.education.com/service/service.php?f=schoolSearch&key=mykey&sn=sf&v=4&city=Atlanta&state=ga&Resf=json"; 
      $.getJSON(jsonp_url + '?callback=?', { 
       url: url 
      }, function(data) { 
       console.log(data); 
       $('body').text(data); 
      }); 
     </script> 
    </head> 

    <body> 
    </body> 
<html> 
+0

感謝您的反饋。不幸的是,這不適用於我:/ – user2495586

+0

你能告訴我錯誤消息還是回溯? – falsetru

+0

1.我複製了你給我的python腳本的腳本 3.我把它放在一個文本文件中並保存爲一個.py文件。在neal/desktop/project/cgi-bin文件夾中,將其保存爲getData.py 4.我將javascript代碼複製到html文件中,並放置在neal/desktop/project文件夾中。 5.我開始了cmd 6.我通過爲neal/desktop/project文件夾輸入python -m CGIHTTPServer來啓動本地服務器。 7.我進入瀏覽器並輸入localserver:8000 8.點擊服務器上託管的html文件。 9.在控制檯日誌中找不到任何內容 – user2495586