1

我使用设置 api 在 wordpress 中构建了一个主题选项页面。我想使用 ajax 更新页面上的表单。他们似乎第一次工作正常,但是当我再次单击“提交”而不刷新页面时,整个页面只给了我一个“0”。请注意,由于我使用 wordpress 本机处理错误和验证,因此使用 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 中。

请让我知道处理此问题的“正确”方法

4

1 回答 1

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;
});
于 2013-04-14T14:30:18.003 回答