2012-03-30 8 views
1

重いjqueryのクロスドメインの問題が発生しています。そのため、web2pyを使用してその問題を回避しようとしています。Web2pyからローカルHTMLファイルへのPOSTデータの取得

私は、ローカルHTMLファイルから私のweb2pyサーバーにPOSTデータを送信しています。 Web2pyは次に、(クロスドメインの問題を解決する)第2のサーバーへのpython POSTを行い、期待される応答を取得します。その応答をローカルのhtmlファイルに戻すにはどうすればよいですか?

私はこれらの結果をデータベースに格納し、URLリダイレクトでそれらを取得することについて考えましたが、私は必要と思われるURLを推測できるとは確信していません。おそらく、データベースから最後のエントリを取得するだけです。

もっと良い方法がありますか?

元のローカルHTMLファイルからこれを直接実行してweb2pyを完全に回避する方法がおそらくもっとあると思いますが、私はPythonではjsよりはるかに快適です。

だから私はから取得しようとしている:

[ローカルのhtmlファイル] - > [POST web2pyにする] - > [他の別のサーバーへのPOSTを] - > [バックローカルのhtmlファイルへの応答]

私はちょうどその最後の脚を理解できません。

def index(): 
    response.headers['content-type'] = 'text/xml' 
    xml = request.body.read() 
    query_args = { 'data': xml } 
    encoded_args = urllib.urlencode(query_args) 
    url = 'myserver.com' 
    content = urllib2.urlopen(url, encoded_args).read() 
    return response.render(dict(content=XML(content))) 

私の地元のhtmlファイルポスト(正しくこのPOSTS)のようになります:

<script language="javascript"> 
function check() 
{ 

jQuery('.myclass').each(function(){ 
     var txt = $(this).serialize(); 
      $.ajax({ 
    type: 'POST', 
    url: 'myserver', 
data: 'mydata', 
statusCode: { 
    302: function() { 
     alert("302"); // this is never called 
    }, 
    200: function() { 
     alert("200"); 
    }, 
}, 
success: function (data, textstatus) { 
    console.log(data); 

}, 
error: function (data) { 
}, 

}); 

}); 
} 

</script> 

答えて

1

あなたは配置する必要があります第二のサーバーへのポストが(これは動作します)

私のコントローラweb2pyのレスポンスをローカルhtmlドキュメントに書き込む "success"ハンドラのコード。

ような何か:

success: function (data, textstatus) { 
    $('#some-element').html(data); 
}, 

ポスト要求が発生すると、あなたが代わりに成功ハンドラが新しいページにリダイレクトする必要があり、何とかセッション変数にXMLデータを格納し、新しいページにそれを見ることができましたしかし、私はJavaScriptでこれをやっているだけで、物事を劇的に単純化すると思う。

EDIT:データの性質がわからないので、本当にXML(何らかの種類のHTMLではなく)の場合は、成功コールバックのデータを処理する必要がありますそれをDOM要素に書き出します。

応答を含めるには、空の要素、おそらくdiv:<div id='some-element'></div>が必要です。

これは必要なものですか?私が誤解した場合は教えてください。

関連する問題