1

私は以前に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 を、データを要求している Web サイトの URL に置き換えることはわかっています。ただし、コールバックを何に置き換えますか?

また、ブラウザで json データを取得するには、ajax 呼び出しを行う必要があることも理解しています。どうすればいいですか?

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);
4

2 に答える 2

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 データ ペイロードを取得し、その値をリクエスト元のクライアントに返すことができます。

于 2013-06-19T00:13:46.987 に答える