2013-06-18 5 views
0

Я раньше не использовал python. Таким образом, я немного смущен. Я пытаюсь использовать скрипт python для получения данных из учебного api. Я не уверен, как это сделать. У меня есть следующий сценарий питона:Обратный вызов в скрипте 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+ ")" 

Я знаю, что я бы заменить URL в тексте с URL сайта я запрашивающий данные. Однако, что я должен заменить обратный вызов?

Я также понимаю, что мне нужно сделать 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-данных и вернуть это значение запрашивающему клиенту.

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