[英]Ajax call after submit does not call the right action/controller in Yii
在下面的jquery腳本中,我使用3個函數來創建,更新和保存注釋。 創建新記錄時,將調用create函數,如果單擊“保存”,則會保存該記錄。 如果我刷新頁面並想更新記錄,則可以使用。 (先更新然后保存功能)
但是,當我要在創建/保存后立即更新而不刷新頁面時,將調用函數save而不是更新/保存。
我可能需要取消綁定事件,但這對我不起作用。 我的保存是通過單擊觸發的,並且在其中,submit事件鏈接到一個元素。
我在某處讀到它不是一個好習慣,但是我讀到的解決方案是從click函數觸發Submit事件,我嘗試了一下,但是由於我正在使用Ajax,它重新加載了我想避免的頁面。
編輯
我進行了跟蹤,可以看到在創建/保存后要更新時,它調用save方法,但不進入方法內部,也不進入更新方法。 所調用的url包含保存但帶有update調用參數。
/blog/index.php/save ...
我的理解是,在MVC模式中,控制器方法呈現視圖。 由於創建/保存后呈現的最后一個視圖是由保存動作控制器完成的,因此在此之后完成的提交將調用呈現視圖的控制器。
任何見解將不勝感激。
$(document).ready(function() {
$("input.switch-input:radio").click(function(e) {
var comment = $(this).data('comment');
var val = $(this).data('val');
if (comment.length == 0){ // New record
$.ajax(
{
--> call url to create new record
});
}
else if(comment !== val){
if (confirm ("change comment?")){
$.ajax(
{
--> call url to update record
});
} else{
alert('no');
}
}
})
;
$('body').on('click','#saveComment',function(e) {
e.preventDefault();
var url = $(this).val();
$("#comment-form").submit(function(e) {
var postData = $(this).serialize();
$.ajax(
{
--> call url to save data
});
e.preventDefault(); //STOP default action
});
$("#comment-form").submit();
$("#comment-form").unbind('submit');
$("#saveComment").unbind('click');
});
});
我假設#saveComment是#comment-form內的一個提交按鈕。 在這種情況下,為什么不省去跟蹤點擊,阻止提交,手動觸發提交等麻煩呢?
$('body').on('submit','#comment-form',function(e) {
e.preventDefault();
// Code to execute after the form was submitted and submission has been prevented
}
話雖如此,如果您想分離它,則可以在那里進行操作,但不能為此使用匿名函數,則必須為其命名。
var submitHandler = function(e) {
e.preventDefault();
// Code to execute after the form was submitted and submission has been prevented
alert("hello");
// Detach event listener when suitable
$("body").off('submit','#comment-form', submitHandler)
}
$('body').on('submit','#comment-form', submitHandler);
此處的工作示例: http : //jsfiddle.net/K3ePW/2/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.