通过AJAX更新wordpress表单第二次不起作用

时间:2013-04-14 14:11:05

标签: jquery ajax wordpress forms wordpress-theming

我使用设置api在wordpress中构建了一个主题选项页面。我想使用ajax更新页面上的表单。他们似乎第一次工作正常,但是当我再次单击“提交”而不刷新页面时,整个页面只给我一个“0”。 请注意,由于我使用wordpress native处理错误和验证,因此使用AJAX重新加载整个表单。我知道这很奇怪,因为重新加载触发ajax请求的表单。如果有解决方法,请告诉我。这是代码

$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中填充接收到的表单。

请让我知道处理此

的“正确”方法

1 个答案:

答案 0 :(得分: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;
});