2013-04-14 90 views
1

我已經使用設置api在wordpress中構建了一個主題選項頁面。我想用ajax更新頁面上的表單。他們似乎第一次正常工作,但是當我點擊「提交」而不刷新頁面時,整個頁面只給了我一個「0」。 請注意,由於我使用WordPress本機處理錯誤和驗證,整個表單使用AJAX重新加載。我知道這很奇怪,因爲觸發ajax請求的表單本身被重新加載。讓我知道是否有解決方法。這裏是代碼通過AJAX更新wordpress表單不會工作第二次

$cg("#cgform").submit(function(){ 
    var b = $cg(this).serialize(); 
    var cgdata = { action : "cg_options_save", cgnonce: cgform.cgnonce ,data: b }; 
    cg_ajax_request(cgdata,cg_form_callback); 
    return false; 
}); 

//Ajax request 
function cg_ajax_request(data,fcall){ 
    $cg.post(ajaxurl, data, function (response) {fcall(response);}); 
} 

cg_ajax_callback函數在div中填充接收到的表單。

請讓我知道了「正確」的方式來處理這個

回答

2

的問題是,事件處理程序綁定到它是由Ajax調用重載形式。第二次嘗試提交表單時,它實際上是第一個ajax調用插入的新實例,它沒有附加事件處理程序。相反,使用on方法來綁定事件處理程序,它將在插入時動態綁定事件處理程序和新窗體。

$cg(document).on('submit', "#cgform", function(){ 
    var b = $cg(this).serialize(); 
    var cgdata = { action : "cg_options_save", cgnonce: cgform.cgnonce ,data: b }; 
    cg_ajax_request(cgdata,cg_form_callback); 
    return false; 
}); 
+0

我試過這個,但現在它甚至第一次不工作。您的解釋是有道理的,但解決方案似乎不起作用 – ansh

+0

嘗試更新的版本。 '$ cg'看起來像一個jQuery對象,但我猜這是你對全局jquery對象的覆蓋? – clav

+0

是它的覆蓋 'jQuery(document).ready(function($ cg)' 並且此更新也不起作用:( 我正在閱讀.on()[在此]的在線文檔(http:// api.jquery.com/on/),他們沒有按照你的方式使用它,但他們的方式也不起作用 – ansh

相關問題