我无法使用ajax和表单使这个插入db函数正常工作。当我执行此操作时,我会收到一个关于成功的空白警报框。
HTML
<div id="rsvpContent">
<form id="Attendevent" action="">
<input id="attend" name="attend" type="checkbox" value="yes" /><label for="attent">Yes, I plan to attend.</label>
<input type="hidden" value="<?php echo get_the_ID(); ?>" name="event_id"/>
<input type="hidden" value="<?php echo $current_user->ID; ?>" name="user_id"/>
</form>
</div>
PHP
add_action(\'wp_ajax_Attending\', \'eventAttend\');
add_action(\'wp_ajax_nopriv_Attending\', \'eventAttend\');
function eventAttend() {
global $wpdb;
$fields = array();
parse_str($_POST[\'data\'], $fields);
if($fields[\'attend\'] == \'yes\') {
$wpdb->insert(\'wp_event_attendants\', array( \'event_id\' => $fields[\'event_id\'], \'user_id\' => $fields[\'user_id\']));
echo $wpdb->print_error();
}
echo \'Not working.\';
die();
}
JS(在header.php中)
$("#attend").click(function(){
var form = $("#Attendevent").serialize();
$.ajax({
url: "<?php echo admin_url(\'admin-ajax.php\'); ?>",
beforeSend: function() {
alert(form);
},
type:\'POST\',
data:{
action: "Attending",
"data": form
},
dataType: \'html\',
success: function(data) {
alert(data);
}
});
});
调试信息
【2013年3月7日17:47:09】PHP通知:未定义索引:参加/wp内容/插件/活动日历注册/功能。php在线198
最合适的回答,由SO网友:vancoder 整理而成
在将表单数据发布到PHP函数之前,您正在序列化表单数据,但在另一端不会取消序列化。因此,您的支票$_POST[\'attend\'] == \'yes\'
总是会失败。
尝试以下操作(未测试)。
function eventAttend() {
$fields = array( );
parse_str( $_POST[\'data\'], $fields );
if($fields[\'attend\'] == \'yes\') {
global $wpdb;
$wpdb->insert(\'wp_event_attendants\', array( \'event_id\' => $fields[\'event_id\'], \'user_id\' => $fields[\'user_id\']));
echo $wpdb->print_error();
}
die();
}