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