php处理程序在对同一处理程序使用mutliple表单时没有响应
我使用以下代码输出一个带有FAQ的表php处理程序在对同一处理程序使用mutliple表单时没有响应,php,jquery,ajax,submit,Php,Jquery,Ajax,Submit,我使用以下代码输出一个带有FAQ的表 // get faq global $wpdb; $faq = $wpdb->get_results("SELECT ID, q, a, cat, quality, active FROM ce_faq"); foreach ($faq as $i) { echo '<div> <a id="'.$i->ID.'" class="question" href="#">'.$i->q
// get faq
global $wpdb;
$faq = $wpdb->get_results("SELECT ID, q, a, cat, quality, active FROM ce_faq");
foreach ($faq as $i) {
echo
'<div>
<a id="'.$i->ID.'" class="question" href="#">'.$i->q.'</a>
</div>
<div id="a'.$i->ID.'" class="answer">
<p>'.$i->a.'</p>
<form method="POST" id="form'.$i->ID.'">
<input type="hidden" value="'.$i->ID.'" name="faq_id"></input>
<input type="hidden" name="action" value="ce_faq_quality"/>'
.wp_nonce_field( 'name_of_my_action','name_of_nonce_field' ).
'<p><b> Was this answer usefull? <input type="radio" name="quality" value="1" class="quality_radio"> yes </input><input type="radio" name="quality" value="-1" class="quality_radio"> No </input> </b></p>
</form>
</div>';
}
echo '<div id="feedback">feedback</div>';
这是我用来处理表单的php函数
add_action('wp_ajax_ce_faq_quality', 'ce_faq_quality');
add_action('wp_ajax_nopriv_ce_faq_quality', 'ce_faq_quality');
function ce_faq_quality(){
$quality = 1; //$_POST['quality'];
$faq_id = 1; //$_POST['faq_id'];
global $wpdb;
$wpdb->query($wpdb->prepare("UPDATE `ce_faq` SET `quality`= `quality` + $quality WHERE id = $faq_id"));
echo 'succes php function ';
die();
}
您的
formid
变量不在ajaxSubmit
函数的范围内。您应该尝试:
jQuery('.quality_radio').click(
function() {
var formid = jQuery(this).closest('form').attr('id')
var formid = '#' + formid;
jQuery(formid).submit(ajaxSubmit(formid));
});
function ajaxSubmit(formId) {
var qu = jQuery(formid).serialize();
jQuery.ajax({
type: "POST",
url: "/wp-admin/admin-ajax.php",
data: qu,
success: function(data) {
jQuery("#feedback").html(data);
}
});
return false;
}
这样您就可以将
formid
传递给ajaxSubmit函数。谢谢您的帮助!有了你的解决方案,我遇到了下一个问题。PHP处理程序没有响应,只是在feedbackdiv中返回零…有什么建议吗?不幸的是,我对Wordpress的了解不够,无法提供太多帮助,但我猜$wpdb->query($wpdb->prepare(…)
执行不正确。可能是抛出了某种错误。我将从这里开始查找。还要确保用于查询数据库的方法不受SQL注入的影响。
jQuery('.quality_radio').click(
function() {
var formid = jQuery(this).closest('form').attr('id')
var formid = '#' + formid;
jQuery(formid).submit(ajaxSubmit(formid));
});
function ajaxSubmit(formId) {
var qu = jQuery(formid).serialize();
jQuery.ajax({
type: "POST",
url: "/wp-admin/admin-ajax.php",
data: qu,
success: function(data) {
jQuery("#feedback").html(data);
}
});
return false;
}