php处理程序在对同一处理程序使用mutliple表单时没有响应

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

我使用以下代码输出一个带有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.'</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;
}