Wordpress:用javascript调用php函数:ReferenceError:<function>未定义</function>

时间:2015-01-04 16:37:30

标签: javascript php jquery ajax wordpress

我在“提交后”事件中使用Gravity Forms来调用functions.php文件中的javascript函数。

涉及3个文件:frontend-checklist.phpfrontend-checklist.jsfunctions.php

GF表格显示在灯箱中,一旦表格完成并按下提交按钮,GF偶数功能会从GF表格中提取特定字段并将其传递给javascript函数。

然后我正在配置Ajax调用以使用该信息插入/更新不同的数据库表。

一切似乎都有效,直到Ajax调用,它似乎永远不会调用php函数将数据写入数据库。

以下是functions.php的代码:

add_action('gform_after_submission_5', 'GF_Submit_5', 10, 2);

function GF_Submit_5($entry, $form){

?>
 <script>
    var vcl_c = <?php echo json_encode($entry['19']); ?>;
        frontend_checklist_fc_database_write(vcl_c );
 </script>  
<?php
}

上面的代码调用了一个javascript函数。这是函数:

function frontend_checklist_fc_database_write(fc_itemID) {

alert ("javascript - dbwrite" + fc_itemID);
    var data = { action: 'fc_database_write', fc_itemID: fc_itemID };
    jQuery.post(frontendChecklist.ajaxurl, data);

}

最后,这里是定义实际写入数据的Ajax调用的代码,以及action和enqueue的配置。此代码位于第三个文件中(在javascript代码和functions.php文件之外)。

add_action('wp_ajax_fc_database_write', array('Frontend_Checklist', 'dbWriteAjax'));
add_action('wp_enqueue_scripts', array('Frontend_Checklist', 'add_js'));

function add_js() {
    wp_enqueue_script('frontend-checklist', plugins_url('frontend-checklist.js', __FILE__), array('jquery'));

    wp_localize_script( 'frontend-checklist', 'frontendChecklist', 
        array( 
            'ajaxurl' => admin_url( 'admin-ajax.php' ),
        )
    );
}


public static function dbWriteAjax() {
    $user_ID = get_current_user_id();
    if ($user_ID == 0) die;
        $ca = (int)$_POST['fc_itemID'];
        $fc_completed = "'on'";

        $casql = $wpdb->prepare('SELECT completed from wp_fc_vendorlist WHERE fc_vendorID = ' .$user_ID. ' and fc_itemID = ' .$ca. ' ORDER BY fc_itemID ASC' );
        $cachk = $wpdb->get_row($casql, ARRAY_A);
        $table_name = 'wp_fc_vendorlist';
    if($cachk =='') {
        $wpdb->query($wpdb->prepare("INSERT INTO $table_name (fc_itemID, fc_vendorID, completed) VALUES ($ca, $user_ID, $fc_completed)"));
    } else {
        $wpdb->query($wpdb->prepare("UPDATE $table_name SET completed = $fc_completed WHERE fc_vendorID =  $user_ID  and fc_itemID = $ca"));
    }       


    die;
}

javascript中的警报将触发,我可以使用firebug跟踪javascript代码,它似乎正在更新变量。错误: ReferenceError:未定义frontend_checklist_fc_database_write 在代码进入javascript函数后立即显示。

对此的任何帮助将不胜感激。

0 个答案:

没有答案