2013-05-12 57 views
0

有人可以幫助我確定以下請求出了什麼問題。即使在服務器端我只是返回一個空白頁面,我仍然不斷收到軟件中止!這是我甚至沒有閱讀請求後的內容。當我使用表單發佈方法發送HTTP發佈請求時,而不是ajax,這一切都很好。所以我相信沒有服務器問題。

謝謝!

  $.ajax({ 
       type: 'post', 
       url: "/ajax/feedback", 
       data: JSON.stringify(["Add","1","2"]), 
       contentType: 'application/json', 
       dataType: 'json', 
       success: function(resp){ 
       alert("Success. Server said:\n '" + resp + "'"); 
       }, 
       error: function(e){ 
       alert('There is an Error: ' + e); 
       } 
      });    

在服務器端(蟒蛇-GAE),我要做的就是以下幾點:

def post(self): 
    logging.info('in post REQUEST request handler') 
    self.response.headers['Content-Type'] = 'text/html' 
    self.response.out.write("received!") 

我得到如下錯誤:

Traceback (most recent call last): 
    File "C:\Program Files (x86)\Python25\Lib\SocketServer.py", line 222, in handle_request 
    self.process_request(request, client_address) 

    File "C:\Program Files (x86)\Python25\Lib\SocketServer.py", line 241, in process_request 
    self.finish_request(request, client_address) 

    File "C:\Program Files (x86)\Python25\Lib\SocketServer.py", line 254, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 

    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2780, in __init__ 
    BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kwargs) 

    File "C:\Program Files (x86)\Python25\Lib\SocketServer.py", line 521, in __init__ 
    self.handle() 

    File "C:\Program Files (x86)\Python25\Lib\BaseHTTPServer.py", line 316, in handle 
    self.handle_one_request() 

    File "C:\Program Files (x86)\Python25\Lib\BaseHTTPServer.py", line 310, in handle_one_request 
    method() 

    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2794, in do_POST 
    self._HandleRequest() 

    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3090, in _HandleRequest 
    raise e 

error: (10053, 'Software caused connection abort') 
+0

你是什麼意思, 「在服務器端軟件中止請求」?服務器端發生了什麼? – Brad 2013-05-12 04:42:05

+0

嗨布拉德,請看服務器代碼和軟件中止錯誤更新的問題。我正在提交一個其textarea被命名爲「反饋」的表單。但是在中止之後,有一個自動獲取'?feedback =「<任何我輸入的輸入框'''附加到原始URL並且有一個自動GET。不知道爲什麼GET發生了(不在服務器端發生,並且ajax代碼就是上面寫的,所以不知道GET是誰的!) – 2013-05-12 05:06:27

+0

@ dev-vb:刪除了我的答案。它的其他東西在你的服務器端代碼。 – mithunsatheesh 2013-05-12 05:08:05

回答

0

最後,找到了答案。簡直不敢相信我花了幾乎整整一天的時間來鑑別這個!

問題是我攔截了html表單的提交按鈕後沒有返回「false」。

jQuery代碼:

$('.submit-feedback > button').click(function(){ 
    $.ajax(...); // same as in the question above 
    return false; // <-- THIS WAS MISSING 
}); 

因爲缺少 「返回false」 語句的和,我也陷入了各種各樣的問題。

的html代碼:

<form class="submit-feedback"> 
    <textarea name="feedback" placeholder="add text."></textarea> 
    <button> 
      Send Feedback 
    </button> 
</form>