2012-03-30 55 views
1

我一直有一些沉重的jQuery跨域問題,所以我一直試圖通過web2py來解決這個問題。從Web2py檢索POST數據到本地HTML文件

我從本地HTML文件發送POST數據到我的web2py服務器。然後,Web2py將向另一臺服務器(解決跨域問題)發送一個Python POST,並獲得預期的響應。我應該如何獲得迴應到我的本地html文件?

我想過將這些結果存儲在數據庫中,然後用url重定向檢索它們 - 但我不確定我能夠猜出我需要的URL。也許只需從數據庫中獲取最後一個條目即可。

或者還有更好的方法嗎?

我意識到有可能有更好的方法直接從原始的本地html文件做到這一點,並完全繞過web2py,但我比python更適合js。

所以我想從:

[本地HTML文件] - > [郵政的web2py] - > [POST到其他不同的服務器] - > [響應返回給本地的HTML文件]

我只是無法弄清楚最後一步。

我的控制器職位,以第2服務器(這工作):

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文件後的樣子(這個帖子正確):

<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: function (data, textstatus) { 
    $('#some-element').html(data); 
}, 

當發佈請求發生時,你可以選擇性地具有成功處理重定向到一個新的頁面,並以某種方式將XML數據存儲在一個會話變量,看看它的新的一頁,但我認爲只是在JavaScript中這樣做會大大簡化事情。

編輯:我不確定你的數據的性質,所以如果它確實是XML(而不是(X)某種類型的HTML),那麼你將需要處理成功回調中的數據,而不是將其寫入DOM元素。

您將需要一個空元素,可能是一個div:<div id='some-element'></div>來包含響應。

聽起來這是你需要的嗎?如果我誤解了,請告訴我。