在使用所有Wordpress ajax挂钩和函数时遇到一些问题。
正在阅读此帖子:5 Tips for Using Ajax in Wordpress
但在尝试了所有代码并将其应用于Ajax表单之后,他感到困惑。
我从我的插件类调用了一个函数,以响应单个帖子页面上的from,让用户“晕倒”。表格打印得很好。以下是表单代码:
//the html form for the front end
function ds_swoons_form(){
global $post, $current_user;
get_currentuserinfo();
$form = \'<div id="swoon-response">\';
$form .= \'</div>\';
$form .= \'<form id="entry_swoon_form" name="entry_swoon_form" action="" method="POST">\';
$form .= \'<input type="hidden" name="ds_postid" value="\'.$post->ID.\'" />\';
$form .= \'<input type="hidden" name="ds_userid" value="\'.$current_user->ID.\'" />\';
$form .= \'<input type="submit" value="Swoon" class="swoon-submit" />\';
$form .= \'</form>\';
return $form;
}//end ds_swoons_form
我的排队:
wp_enqueue_script(\'json-form\');
// embed the javascript file that makes the swoons AJAX request
wp_enqueue_script( \'swoon_ajax_request\', plugins_url(\'ds-swoons/js/swoon-ajax-form.js\'), array( \'jquery\' ) );
// declare the URL to the file that handles the AJAX request (wp-admin/admin-ajax.php)
wp_localize_script( \'swoon_ajax_request\', \'SwoonAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
//add the AJAX action
add_action( \'wp_ajax_swoons_submit_action\', array(\'DS_Swoons\',\'ds_ajax_swoons_form_submit\') );
和我的javascript:
jQuery(\'#entry_swoon_form\').ajaxForm({
target: \'#swoon-response\',
dataType: \'html\',
data: {
action: \'swoons_submit_action\'
},
url: SwoonAjax.ajaxurl,
success : function(responseText) {
jQuery(\'#swoon-response\').html(\'Swooned!\');
}
});
谈到AJAX,我是一个新手,所以我可能离这太远了。我读的这篇文章很好,直到最后,它显示了一个ajaxForm请求示例,我迷路了。
ajax表单函数从不运行,页面只是重新加载。所以我猜我的一个排队函数是不正确的。
Thanx提前。
编辑---------------------------------------------新建jQuery。发布方法代码-但仍不起作用
jQuery(document).ready(function(){
jQuery(\'.swoon-submit\').click(function(){
jQuery.post(
// see tip #1 for how we declare global javascript variables
SwoonAjax.ajaxurl,
{
// here we declare the parameters to send along with the request
// this means the following action hooks will be fired:
// wp_ajax_nopriv_myajax-submit and wp_ajax_myajax-submit
action : \'swoons_submit_action\',
//nonce for validation
//swoonNonce : SwoonAjax.swoonNonce,
// other parameters can be added along with "action"
postid : SwoonAjax.postid,
userid : SwoonAjax.userid
},
function( response ) {
alert( response );
}
);
});
console.log(SwoonAjax.ajaxurl)
});
我确实在FireBug中很快就出现了错误,但在请求结束之前,我看不到发生了什么。并且在之后没有错误。post已运行。数据库中没有更新数据,所以我知道它不会被触发。
Thanx公司
编辑2-----------------------------------------------------------------
我已获得要提交的表单,它使用以下代码更新DB:
jQuery(document).ready(function(){
jQuery(\'.swoon-submit\').click(function(){
var $form = $( \'form#entry_swoon_form\' ),
postid = $form.find( \'input[name="ds_postid"]\' ).val(),
userid = $form.find( \'input[name="ds_userid"]\' ).val();
jQuery.post(
// see tip #1 for how we declare global javascript variables
SwoonAjax.ajaxurl,
{
// here we declare the parameters to send along with the request
// this means the following action hooks will be fired:
// wp_ajax_nopriv_myajax-submit and wp_ajax_myajax-submit
action : \'swoons_submit_action\',
//nonce for validation
//swoonNonce : SwoonAjax.swoonNonce,
// other parameters can be added along with "action"
ds_postid: postid,
ds_userid: userid
},
function( response ) {
alert( response );
}
);
return false;
});
但是:我似乎无法获取要发送到PHP函数以插入DB的表单字段值(隐藏)。信息在Firebug控制台中被发送,但没有信息到达PHP函数。我认为这与我如何将字段发送到PHP函数有关,但我不确定。Thanx!