0

正しい HTTP 応答のみをフォーマットできるライブラリが必要です (Web サーバーを既に持っているため、Web サーバーを作成する必要はありません)。

http 応答の本文とコンテンツ タイプをこのライブラリに渡す必要があります。

AJAX を送信しようとすると、次の関数が正しく動作しません - jQuery が応答を見つけられません。ただし、ブラウザの URL 文字列に対応する URL を入力すると、ページが表示されます。

def response( data ):   
    return "HTTP/1.0 200 OK\r\nContent-Type:application/json\r\nConnection:close\r\n\r\n{0}\r\n".format( data ) 

詳細. データ変数はjsonの文字列です。また、SocketServer クラスを使用し、子の handle() 関数で self.request.sendall( result_response ) を呼び出します。

# the 'request handler' class
class StateRequestHandler( SocketServer.BaseRequestHandler ):

    def handle( self ):
    ...
        self.request.sendall( response( some_json ) )

# the configured server class
class StateServer( SocketServer.ThreadingMixIn, SocketServer.TCPServer ):
pass

解決しました。その理由は、クロスドメイン リクエストにありました。

4

1 に答える 1

1

次のことを試してください。

  1. HTTP 1.0 および 1.1 の仕様では、ヘッダー名とヘッダー値の間の空白はオプションであると規定されていますが、仕様では「単一の SP[ace] が推奨される」と規定されています。

  2. クロス ドメインの問題がないことを確認して、HTML ページが JSON 応答としてドメイン、スキーム、およびポートから正確に提供されるようにします (CORS.

  3. Chrome Dev Tools / Firebug / Fiddler を使用して、彼らが行っているリクエストを確認し、Javascript コンソールを確認します。

  4. Wireshark を使用して、ワイヤ上に何があるかを正確に確認します。

于 2012-11-03T10:29:33.407 に答える