2011-08-25 27 views
2

道歉了前面的noob問題的數據... ...jquery.ajax POST請求獲得來自應用程序引擎服務器

你好,我怎麼使用jQuery.ajax的AppEngine上的服務器的Python的最終數據嗎?我知道如何使用ajax和適當的處理程序將數據發送到服務器,但我想知道是否有人可以告訴我從服務器獲取值的ajax請求是什麼樣的。 (假設我想從數據存儲中獲取一個數字並在javascript中使用它)。

客戶端發送到服務器(使用jquery)

客戶端JavaScript:

//jQuery and ajax function loaded. 

<script type="text/javascript"> 
    var data = {"salary":500}; 
    $.ajax({ 
    type: "POST", 
    url: "/resultshandler", 
    data: data 
</script> 

服務器端:

class ResultsHandler(webapp.RequestHandler): 
    def get(self): 
     n = cgi.escape(self.request.get('salary')) 
     e = Engineer(salary = n) 
     e.put() 

和下DEF主():,我有處理程序('/ put_in_datastore',ResultsHandler)

同樣,類似的代碼retr從Python結束數字?如果有人可以提供處理程序代碼和JavaScript代碼,那將是非常好的...

+0

爲什麼在將數據存儲到數據存儲中之前,使用'cgi'轉義值? –

回答

9

這種機制與數據流動方式完全相同。在請求成功完成後,使用ajax調用中的success參數對數據進行操作。這通常稱爲回調。其他回調存在。有關完整信息,請參閱http://api.jquery.com/jQuery.ajax/

$.ajax({ 
    url: "/resultshandler", 
    type: 'POST', 
    data: data, 
    success: function(data, status){ 
    //check status 
    //do something with data 
    } 
}); 

在Python的最後,你用self.response.write.out(output)返回數據。見下面的例子。

class ResultsHandler(webapp.RequestHandler): 
    def post(self): 
     k = db.Key.from_path('Engineer', the_engineer_id) #will be an integer 
     e = db.get(k) 
     output = {'salary': e.salary} 
     output = json.dumps(output) #json encoding 
     self.response.write.out(output) 

此外,您的網址路由應該看起來像('/resultshandler', ResultsHandler)。我不知道/put_in_datastore從哪裏來。

最後,注意def post而不是def get,因爲我正在做一個POST要求使用JavaScript。你可以像GET請求那樣做,在這種情況下,你會使用def get

+0

嗯......我一直在獲取POST http:// localhost:8110/resultshandler 500(內部服務器錯誤)。我試着做output = {'salary':500},但在成功函數下沒有運氣和提醒(數據),但沒有運氣...... – ejang

+0

不要忘記json編碼。 Pastebin你的代碼,我可能會提供幫助。 –

+0

http://pastebin.com/4W19ZGpC謝謝! – ejang

相關問題