2014-02-23 63 views
1

的Linux bogon 3.9.5-301.fc19.i686,nginx1.4.2 + web.py0.37 + uwsgi2.01jquery.post()和後端迴應,但回調函數的參數爲​​空

我編寫一個獲取用戶輸入(一個文本字符串)的html頁面,並將其發佈到後端。後端只需讀取輸入字符串併發送回頁面。

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery("#ExtButton").click(function(){ 
     var postdata = document.getElementById("url_to_get").value; 
     jQuery.ajax({ 
      type: 'POST', 
      url: "http://127.0.0.1/TextPickup", 
      data: postdata, 
      success: function(data,status){alert("status:"+ status +",data:" +data)}, 
      dataType:'html' 
     }); 
    }); 
}); 
</script> 
<input type="text" name="url_to_get" id="url_to_get" style="width:310px"> 
<button id="ExtButton">send</button> 

,並在後端的python腳本:

import web 
import os 
urls = (
'/','Index', 
'/TextPickup','TextPickup', 
'/TextAnalysis', 'TextAnalysis' 
) 

class Index: 
    ... 

class TextPickup: 
    def POST(self): 
     dest_url = web.data() 
     return dest_url + ".." 

class TextAnalysis: 
    ... 

但是當我把東西並點擊按鈕,數據是空的象下面這樣: enter image description here

我已經檢查了輸出的uWSGI,

[pid: 20807|app: 0|req: 1/1] 127.0.0.1() {50 vars in 800 bytes} [Sun Feb 23 13:44:58 2014] POST /TextPickup => generated 6 bytes in 2 msecs (HTTP/1.1 200) 0 headers in 19 bytes (2 switches on core 0) 

甚至wireshark: enter image description here 很明顯,後端已成功發送響應,包括字符串「測試..」我期望,但爲什麼回調函數沒有得到響應字符串作爲其參數?

UPDATE: 的螢火, enter image description here 當我右鍵單擊的http://127.0.0.1/TextPickup和選擇, 包括預期字符串頁「在新標籤中打開」,「測試。」 appeared.however,它是應該是回調函數的參數。

+0

您可以使用瀏覽器開發工具的網絡標籤檢查響應 –

+0

由於您發送純文本,您可以嘗試使用dataType:'text' – palanik

+0

它看起來像您的python腳本以十六進制形式返回它,否則在您的' wireshark'響應區域,它會以字符串形式進行響應。嘗試顯式地將你的'dest_url' var作爲一個字符串轉換(如果這是錯誤的,抱歉,我以前從未使用python,所以這只是一個猜測) – Derek

回答

0

我發現它爲什麼不起作用 - web.py使用不正確,瀏覽到網頁也是錯誤的

第一,我安排像下面的文件:

folder1 
--GetText.html 
--cgi-bin 
    --TextAnalysis.py 

,並只需點擊文件GetText.html訪問的網頁。 錯誤發生。

我回顧了一些關於web.py和jQuery的網頁,比如random Bytes,甚至有一個論壇的源代碼在github上使用了web.py和jQuery,實現了/template這個文件夾沒有必要。

現在我重新排列文件這樣

folder1 
--TextAnalysis.py 
--templates 
    --GetText.html 

從而jquery.post()在GetText.html改爲

jQuery.ajax({ 
    type: 'POST', 
    url: "/TextPickup", 
    data: postdata, 
    success: function(data){alert(data);}, 
    dataType:'text' 
}); 

TextAnalysis.py

class Index: 
    def GET(self): 
    return render.GetText() 

... 

render = web.template.render('templates/') #add up 

現在我visist的網頁在Firefox中輸入url http://127.0.0.1/,並且一切正常。