0
JSONデータをJSONP経由で返すために、GAEでPythonで書かれたアプリと対話するページを作成しました。しかし、どのような方法を使用しても、ページは常にハングアップし、データは実際には画面に表示されません。私のアドレスバーにappspotのURLを入力するだけで、それを要求するとうまくいく。GAEへのAjaxリクエストでページがハングアップ
ここは、コードの主要部分です。
(GAE上)Pythonのmain.py
def retrieve_data(self):
# Retrieve data from some API, manipulate and return result.
# Note: I'm not using this handler for the request.
# It's just there in case I need it.
class MainHandler(webapp2.RequestHandler):
def get(self):
data = retrieve_data(self)
self.response.headers["Content-Type"] = "application/json"
self.response.out.write(
json.dumps(data)
)
# I'm using this handler for the JSONP request.
class JSONPHandler(webapp2.RequestHandler):
def get(self):
data = retrieve_data(self)
self.response.headers["Content-Type"] = "application/json"
self.response.out.write(
"%s(%s)" %
(urllib2.unquote(self.request.get("callback")),
json.dumps(data))
)
app = webapp2.WSGIApplication([
('/', MainHandler),
('/jsonp', JSONPHandler)
], debug=True)
index.js(GAE上でホストされていない)
function add(data) {
// Sort data, add to DOM.
}
$.ajax({
type: "GET",
dataType: "jsonp",
url: "(APPSPOT URL)/jsonp",
success: function(data) { add(data) }
});
私はまたしてスクリプトタグを作成し、$に.getを試してみましたsrcはappspotリンクを指しています。他のXMLHTTPRequestメソッドも説明されていますが、うまくいきません。 私が成功をconsole.logに伝えると、数秒後に実行されます。
コードに問題がありますか? main.pyで何か不足しているのですか、それとも間違っていますか?
あなたはindex.js内()はconsole.logことはできますか?あなたは400を得ていますか? – GAEfan
あなたは 'success'でログインすれば正しい結果を得ていると述べました。 'function add(data)'の中にロギングを試みてください。 – GAEfan
@GAEfanロギングソートは 'add'関数で動作します。それはコンソールに返されますが、私はそれを展開して、それが返すデータを見ることはできませんし、ページはまだハングアップします。しかし、これは '成功'のログインには当てはまりません。私がそれをすれば、うまくいくと思われる。 – yugottabesssoooruude