【问题标题】:jQuery Ajax Form Not Working with Select ElementsjQuery Ajax 表单不适用于选择元素
【发布时间】:2014-03-19 18:39:23
【问题描述】:

我似乎对 jQuery 和新创建的 AJAX 表单/函数有一个奇怪的问题。我对 AJAX 很陌生,所以请多多包涵。这是 jQuery:

jQuery('#wpuf_new_post_form').submit(function(e) {

    e.preventDefault();

    var data2 = jQuery('#wpuf_new_post_form').serialize();

    var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';

    jQuery.ajax({
        type: 'POST',
        url: ajaxurl,
        data: data2 + '&action=savedata',
        success: function(resp) {
            if(!resp){ alert ('Failed!')}else{ alert(data2) }
        }
    });

});

以上代码将我的#wpuf_new_post_form表单提交,序列化数据,然后传递给我的PHP函数:

add_action('wp_ajax_nopriv_savedata', 'my_ajax_save_form');
add_action('wp_ajax_savedata', 'my_ajax_save_form');

function my_ajax_save_form(){

    $my_post = array(
        'post_title'    => $_POST['wpuf_post_title'],
        'post_content'  => $_POST['wpuf_post_content'],
        'post_type'     => $_POST['wpuf_post_type'],
        'post_status'   => 'publish',
    );

    wp_insert_post($my_post);

    $this_post_ID = wp_insert_post($my_post);

    add_post_meta($this_post_ID, 'cf_user-timestamp',  $_POST['cf_user-timestamp']);
    add_post_meta($this_post_ID, 'cf_project-id',  $_POST['cf_project-id']);
    add_post_meta($this_post_ID, 'cf_bin-id',  $_POST['cf_bin-id']);
    add_post_meta($this_post_ID, 'cf_status',  $_POST['cf_status']);
    add_post_meta($this_post_ID, 'cf_schedule-date',  $_POST['cf_schedule-date']);
    add_post_meta($this_post_ID, 'cf_reply-url',  $_POST['cf_reply-url']);
    add_post_meta($this_post_ID, 'cf_from-user',  $_POST['cf_from-user']);

}

如上所示,通过 AJAX 提交创建帖子和帖子元,工作正常。仅有的三个拒绝工作的字段恰好是 select 表单元素。

他们是:

  • cf_project-id
  • cf_bin-id
  • cf_status

再一次,所有其他如上所示的帖子元提交,都可以很好地访问数据库。只有select 表单元素值没有。

是否有更好的方法来处理select 表单元素的序列化值?

PS:如果它有任何值,这里是作为 jQuery 变量 data2 传递的序列化字符串的示例。如您所见,该格式与任何其他提交的表单元素没有什么不同:

_wpnonce=537e4539cc&amp;_wp_http_referer=%2Fajax%2F&amp;wpuf_post_title=1395254005136&amp;wpuf_post_content=Testing&amp;cf_user-timestamp=March+19th+2014%2C+11%3A33%3A25+am&amp;cf_project-id=3797&amp;cf_bin-id=3325&amp;cf_status=-status-today&amp;cf_schedule-date=03%2F21%2F2014&amp;cf_reply-url=&amp;cf_from-user=&amp;wpuf_post_type=post&amp;wpuf_post_new_submit=yes

【问题讨论】:

  • 你能显示 HTML 吗?
  • 您明白return false 之后的所有内容都不会被处理吗?
  • @adeneo 由于 wp_insert_post() 函数正常工作,因此无论是否返回 false 似乎都可以正常工作,但为了简单起见,我已将其删除。问题仍然存在。
  • @Bene 抱歉,html 是通过插件动态创建的,在此处发布会有点长且混乱。有没有你想看的特定部分?我可以在这里发布一部分。
  • 我想要表单,尤其是不起作用的选择

标签: php jquery ajax wordpress forms


【解决方案1】:

看看你是否在可能是问题的 html 中为 select 元素添加了 'name' 属性。

【讨论】:

  • 是的,每个选择元素都有一个关联的名称属性:name="cf_project-id", name="cf_bin-id", name="cf_status"
猜你喜欢
  • 1970-01-01
  • 2017-10-09
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 2019-04-29
相关资源
最近更新 更多