2017-07-31 12 views
0

私はWebサーバーを構築するために竜巻を使用していますが、今はログインモジュールを作成しています。
竜巻投稿のリクエスト:引数がありません

<body> 
    <form id="uploadForm"> 
     <div class="form-group"> 
     <label for="exampleInputEmail1">Email address</label> 
     <input name="name" type="email" class="form-control" id="exampleInputEmail1" placeholder="Email"> 
     </div> 
     <div class="form-group"> 
     <label for="exampleInputPassword1">Password</label> 
     <input name="password" type="password" class="form-control" id="exampleInputPassword1" placeholder="Password"> 
     </div> 
     <button id="submit" type="button" class="btn btn-default">Submit</button> 
    </form> 
</body> 
    <script src="../js/plugins/jquery-3.2.1.min.js?v=c9f5aeeca3"></script> 
    <script src="../js/common/bootstrap.min.js?v=5869c96cc8"></script> 
    <script> 
     $(function(){ 
      $('#submit').on('click',function(){ 
       $.ajax({ 
        url: 'http://www.example.com/login', 
        method: 'POST', 
        data: $('#uploadForm').serialize(), 
        contentType: false, 
        processData: false, 
        cache: false, 
        success: function(data) { 
         console.log(data); 
         if(data === 'ERROR'){ 
          alert('login failed') 
         }else{ 
          location.href = data; 
         } 
        }, 
        error: function (jqXHR) { 
         alert('ERROR'); 
        } 
       }); 
      }); 
     }); 
    </script> 

とバックエンド部分:

class LoginHandler(tornado.web.RequestHandler): 
    def post(self, path): 
     try: 
      print(self.request.body) 
      name = self.get_body_argument("name") 
     except Exception as e: 
      print(e) 

私がテストを行うと、私はprint(self.request.body)は私に結果与えることを見ることができます:b'name=test&password=tttt'のが、その後、私は例外を取得ここでは、コードです:

HTTP 400:不正な要求(欠落している引数名)

name=testはhttpの本体にありますが、引数名の不足をなぜ教えているのですか?

答えて

0

竜巻はコンテンツタイプとして "application/x-www-form-urlencoded"と "multipart/form-data"のみをサポートしています。したがって、サーバーに投稿要求を送信するときは、適切なcontentTypeで要求を送信する必要があります。 'application/x-www-form-urlencoded'がデフォルトで設定されているようたとえば、

$.ajax({ 
      url: 'http://www.example.com/login', 
      method: 'POST', 
      data: $('#uploadForm').serialize(), 
      contentType: 'application/x-www-form-urlencoded', 
      processData: false, 
      ... 

また、我々は、AjaxでcontentTypeを無視することができます。

関連する問題