2013-07-24 18 views
4

我正在測試一些代碼,用Python和JavaScript試圖建立一個Ajax系統。基本上我只是想輸入一個單詞並讓python代碼發回它。這是我的HTML/JavaScript的:簡單的Python和Ajax示例如何使用Python發送響應?

<html> 
<head> 
<title>Simple Ajax Example</title> 
<script language="Javascript"> 
function xmlhttpPost(strURL) { 
    var xmlHttpReq = false; 
    var self = this; 
    // Mozilla/Safari/Chrome 
    if (window.XMLHttpRequest) { 
     self.xmlHttpReq = new XMLHttpRequest(); 
    } 
    // IE 
    else if (window.ActiveXObject) { 
     self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    self.xmlHttpReq.open('POST', strURL, true); 
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    self.xmlHttpReq.onreadystatechange = function() { 
     if (self.xmlHttpReq.readyState == 4) { 
      updatepage(self.xmlHttpReq.responseText); 
     } 
    } 
    self.xmlHttpReq.send(getquerystring()); 
} 

function getquerystring() { 
    var form  = document.forms['f1']; 
    var word = form.word.value; 
    qstr = 'w=' + escape(word); // NOTE: no '?' before querystring 
    return qstr; 
} 

function updatepage(str){ 
    document.getElementById("result").innerHTML = str; 
} 
</script> 
</head> 

<body> 

<form name="f1"> 
    <p>word: <input name="word" type="text"> 
    <input value="Go" type="button" onclick='JavaScript:xmlhttpPost("/ajaxtest")'></p> 
    <div id="result"></div> 
</form> 

</body> 

</html> 

,這裏是我的Python:

class AjaxTest(BlogHandler): 
    def get(self): 
     user = self.get_user()  
     self.render('ajaxtest.html', user = user) 
    def post(self): 
     user = self.get_user() 
     word = self.request.get('w') 
     logging.info(word) 
     return '<p>The secret word is' + word + '<p>' 
     #having print instead of return didn't do anything 

當我登錄這個詞正確顯示出來,當我硬編碼STR基因座:

function updatepage(str){ 
    document.getElementById("result").innerHTML = str; 
} 

它顯示正確,但現在沒有硬編碼它什麼也沒有顯示。我應該如何發送回覆?我使用webapp2作爲我的Python框架,Jinja2作爲模板引擎,儘管我不認爲這與它有很大關係。我需要發送HTTP標頭嗎?

+0

請問你能否提供一些鏈接,哪裏有簡單的python和ajax調用 –

回答

4

如果你的問題是有困難的,從您的POST方法返回一個字符串,沒有渲染的模板,你可以使用write方法來實現這一目標:

self.response.write('')

我相信你可以只修改改標題self.response.headers

+1

那麼這是一個愚蠢的錯誤......哈哈感謝第二組眼睛 – clifgray

相關問題