JQuery和AJAX不能使用选择表单元素

时间:2014-03-20 作者:ThomasEMcGee

我似乎对jQuery和新创建的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提交,如上所示创建post和post-meta,效果很好。唯一拒绝工作的三个领域恰好是select 表单元素。

它们是:

同样,上面描述的所有其他post meta提交都很好地访问了数据库。这只是select 表单元素值。

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

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

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

1 个回复
SO网友:iFind Freelancer

而不是这样:

jQuery(\'#wpuf_new_post_form\').submit(function(e) {
试试这个方法,它应该对你有用。

jQuery(document).on("submit", "#wpuf_new_post_form" , (function(e)) {

    var data2 = jQuery(\'#wpuf_new_post_form\').serialize();
第一个doconsole.log(data2)

试试看,应该在控制台中打印整个表单的数据。

结束