9

JSON Python Web サービスからデータを要求する AJAX 関数を作成しています。私のAJAXリクエストは次のようになります:

  url = "http://localhost:8001/blah"
  $.ajax({
      url: url,
      type: 'get',
      dataType: 'jsonp',
      success: function(data) {
          console.log('hi')
      }
  });

今のところ、私の Python Web サービスには、次の return ステートメントを持つ「/blah」へのリクエストを処理する関数があります。

return json.dumps({'a':1, 'b':2 })

AJAX 関数が Python Web サービスからの応答を正常に取得していませんが、Firebug ではエラーが発生しません。Web サービスまたは JavaScript の何が間違っていますか?

4

4 に答える 4

9

Jquery の JSONP データ型を使用するとどうなるかというと、URL の一部としてコールバック関数名が GET パラメータとして送信されるため、実際には「http://localhost:8001/blah?callback=json125348274839」のようなクエリを実行していることになります。 .

Web サーバーからの応答は次のようになります。

    return "%s({'a':1, 'b':2 })" % _GET_PARAMS('callback')

したがって、Web サーバーは「json125348274839({'a':1, 'b':2 })」のようなものを返します。

それが役立つことを願っています!

于 2012-07-20T07:57:42.567 に答える
6

ザックはそれを手に入れました。私のJavaScriptは正しかった。Pythonのreturnステートメントを次のように変更しました。

callback = request.args.get('callback')
return '{0}({1})'.format(callback, {'a':1, 'b':2})
于 2012-07-22T19:16:05.497 に答える
1

Python Web サービスでロギングをオン (または追加) します。Web サーバーのログを調べてください... JavaScript クライアントからの要求を受け取っていますか? Web サーバーが応答を返していることをログに記録していますか?

おそらく、使用しているフレームワークに依存します。ハンドラー関数から文字列を返すのと同じくらい簡単ですか? おそらく、ハンドラーは文字列のリストを返すはずですが、リストを取得していないため、クライアントには何も返していません。Web サーバーのログでエラーを確認してください。

于 2012-07-20T07:50:25.573 に答える
1

最初の行の閉じ引用符とセミコロンを忘れました =)

解決しない場合は、以下を確認してください。

  1. リスト項目
  2. Pythonサービスとして何を使用していますか? ジャンゴ、フラスコ、何か他のもの?多分あなたは提供するpythonコードを提供できますか?
  3. また、「Net」Firebug のタブを見て、「url」へのリクエストが実際に処理されることを確認した後 (404 または 50x コードではなく 200 が返される)、「Response」サブタブを確認します。

お役に立てれば!

于 2012-07-20T07:51:10.910 に答える