2016-08-16 66 views
0

我對Ajax比較新,我的問題是我想提交表單作爲PATCH,並解析url,這是Mustache發送的{{add_member_url}},我沒有得到任何錯誤,後端工作,我試過了。服務器收到GET,雖然我的表格爲method="PATCH",而Ajax method="PATCH",在Ajax中有兩個函數首先得到 - 我渲染表單的第二個是PATCH來提交表單。AJAX沒有解析數據,也沒有使用PATCH方法

的JavaScript

$('.list').on('click', '#add', function(event){ 
     event.preventDefault(); 
     var url_send = $(this).data("add_url") 
     // $("#yourModal").modal({"backdrop": "static"}); 
     $.get(''+$(this).data("add_url"), function(data){ 
      console.log(this); 
      var template = $("#add_member_template").html(); 
      console.log("T",template); 
      data.add_member_url = url_send; 
      console.log(data.add_member_url); 
      var rendered = Mustache.render(template, data); 
      console.log(rendered); 
      $('.contain').html(rendered); 

     }); 
    }); 



    $('.contain').on('submit', '#add_member', function(event){ 
     event.preventDefault(); 

     console.log('U',$(this).data("add_url")); 
     $.ajax({ 
      url:''+$(this).data("add_url"), 
      method: 'PATCH', 
      data: $(this).serialize(), 
      success: function(data) { 
       console.log(method); 

     } 
     }); 


    }); 
}); 

HTML表單

<div id="forma" class="contain" ></div> 
    <script id="add_member_template" type="mustache/template"> 

    <form id="theForm" action="" method="PATCH"> 

      {% csrf_token %} 
      {% verbatim %} 

<p> {{pk}} </p> 
<p><label for="ssn">SSN:</label> 
<input id="ssn" type="text" name="tename" data-add_url="{{add_member_url}}" value="{{tename}}"></p> 

<button id="add_member" data-add_url="{{add_member_url}}" type="submit" value="save" class="btn blue">Submit</button> 



      {% endverbatim %} 
     </form> 

     </script> 
+1

你爲什麼寫' '' + $(本)。數據( 「add_url」)',而不是僅僅'$(本)。數據( 「add_url」 )'? – Barmar

回答

0

你的事件綁定是錯誤的。 submit事件只發生在窗體上,而不是在提交按鈕上。您需要綁定到按鈕的click事件:

$(".contain").on("click", "#add_member", function(event) {... }); 
+0

我已經改變它,問題是,它不是解析動作url(( – Nik

+0

$('。contains')。on('submit','#theForm',function(event){event.preventDefault(); \t \t \t \t的console.log( 'U',$(本)。數據( 「add_url」)); \t \t $阿賈克斯({ \t \t網址:$( '#theForm')ATTR(。 '動作'), \t \t方法: 'PATCH', \t \t數據:$(本).serialize(), \t \t成功:功能(數據){ \t \t \t console.log(method); \t} \t \t}); \t \t \t \t \t}); – Nik

+0

我改變了我的答案,以消除這一點。 '$(this).data(「add_url」)只在'this'是按鈕時才起作用,而不是形式,因爲表單沒有'data'屬性。 – Barmar