2014-03-29 53 views
2

我正在嘗試做一個簡單的ajax表單發佈。我認爲我的代碼在$ .ajax行中存在問題。一旦代碼碰到$ .ajax部分,console.log()將無法工作,表單只是常規地重定向到ajax-report-comment.php頁面,而不是通過ajax。直到這部分我的console.log函數報告數據並且不重定向到頁面。Ajax表格問題

有沒有人看到我在這裏做錯了?基本上取決於成功,我希望它提醒用戶成功的報告。

提前致謝!

代碼:

<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 


<script type="text/javascript"> 

$(document).ready(function(){ 
$('form.ajax').on('submit',function() { 

    var that = $(this), 
     url = that.attr('action'), 
     method = that.attr('method'), 
     data = {}; 

     that.find('[name]').each(function(index, value) { 
      var that = $(this), 
       name = that.attr('name'), 
       value = that.val(); 

      data[name] = value;   
     }); 

     $.ajax({ 
      url: url, 
      type: type, 
      data: data, 
      success: function(response) { 
       console.log(response); 
      } 
     }); 

    return false; 


}); 
}); 

</script> 
</head> 
<body> 

<form method="post" action="ajax-report-comment.php" class="ajax"> 
    <input type="submit" value="Report" /> 
    <input class="field" type="hidden" name="report_user_id" id="report_user_id" value="5"/> 
    <input class="field" type="hidden" name="report_comment_id" id="report_comment_id" value="33543"/> 
</form> 



</body> 
</html> 

回答

5

我敢肯定return false;取消默認操作jQuery中的現代版本被棄用(如果使用migrate插件,您將看到有關該警告),所以你應該使用:

$('form.ajax').on('submit',function(e) { 
    e.preventDefault(); 
    // the rest of your code 
+1

這可能是這個原因,最近我也正在和類似的問題'返回FALSE'和'的preventDefault()'工作。 –

+0

嗨Jeroen,我按照你的指示,它看起來像我有一個錯誤:未捕獲ReferenceError:類型未定義demo.php:31 (匿名函數)demo.php:31 x.event.dispatch jquery-1.10.2 .js:5095 v.handle – Jason

2

我想添加到@jeroen回答一下:

使用event.preventDefault(),他建議,同時也檢查到.serialize()

你可以取代這個代碼整個塊(從上面的代碼):

// Replace this entire block with jQuery's serialize 
that.find('[name]').each(function(index, value) { 
     var that = $(this), 
      name = that.attr('name'), 
      value = that.val(); 

     data[name] = value;   
    }); 

有了:

var data = $(this).serialize(); 
+0

將嘗試序列化方法。感謝您的輸入。 – Jason

0

感謝的Jeroen我能找到的匿名函數的這個錯誤。我有方法,我應該有輸入變種。

修正功能的js代碼:

$(document).ready(function(){ 
$('form.ajax').on('submit',function(e) { 
    e.preventDefault(); 
    var that = $(this), 
     url = that.attr('action'), 
     type = that.attr('method'), 
     data = {}; 

     that.find('[name]').each(function(index, value) { 
      var that = $(this), 
       name = that.attr('name'), 
       value = that.val(); 

      data[name] = value;   
     }); 

     $.ajax({ 
      url: url, 
      type: type, 
      data: data, 
      success: function(response) { 
       console.log(response); 
      } 
     }); 

    return false; 


}); 
});