我試圖發送一個ajax請求來完成一個任務,當一個鏈接被點擊時。由於某些原因,e.preventDefault
無法正常工作,我仍然被髮送到該頁面。有什麼我失蹤?preventDefault不起作用
它只是應該去頁面設置複選框檢查(或未選中),然後重定向。但是它只是進入頁面。任何幫助將是偉大的!
這裏是main.js
$(function() {
$('.ajax-task-complete').on({
click: function(e) {
e.stopPropagation();
e.preventDefault();
var href = $(this).attr('href');
$('<div></div>').load(href+' form', function() {
// Set Form
var form = $(this).children('form');
// Set Checkbox
var cb = form.find('input[type="checkbox"]');
// Taggle Checkbox
cb.prop('checked', !cb.prop('checked'));
// Form Action URL
var url = form.attr('action');
// Set Data
var data = form.serialize();
$.ajax({
url: url,
data: data,
method: 'post',
dataType: 'json',
cache: false,
success: function(obj) {
var tic = $('#task-complete-' + obj.id + ' .ajax-task-complete');
},
complete: function() {
console.log('complete');
},
error: function(err) {
console.log(err);
}
});
});
}
});
});
這裏請求按鈕
<td id="task-complete-{{ entity.id }}">
{% if entity.completed %}
<a class="check ajax-task-complete" href="{{ path('task_edit_complete', { 'id': entity.id }) }}">✔</a>
{% else %}
<a class="uncheck ajax-task-complete" href="{{ path('task_edit_complete', { 'id': entity.id }) }}">✔</a>
{% endif %}
</td>
爲什麼不'你只是不附加點擊事件?如果你有一些標準你正在評估,並因此運行preventDefault,那麼現在可能考慮從函數返回? –
爲什麼在你的函數中已經使用ajax的時候使用了load?這可能是因爲你的e.preventDefault()工作不正常而發生的。 –
你可以顯示按鈕'ajax任務完成' –