2013-06-19 2 views
0

Сейчас я пытаюсь получить доступ к данным из 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+ ")" 

Затем нужно вызвать скрипт питона в своем коде JavaScript/JQuery через $ .getJSON. Мой профессор сказал, что мне нужно передать URL-адрес образовательного API и вернуться к этому сценарию. Я не уверен, как я это сделаю. Как мне это сделать? Каков мой обратный вызов? Это мой код jquery. Я удалил свой ключ из URL для обеспечения конфиденциальности. Он заменяется словом 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() 

Включить callback=? в url. (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. Я начал локальный сервер, набрав python -m CGIHTTPServer для папки neal/desktop/project. 7. Я зашел в браузер и набрал локальный сервер: 8000 8. нажал на мой html-файл, размещенный на сервере. 9. посмотрел в консольном журнале, чтобы ничего не найти – user2495586

Смежные вопросы