WP排队脚本顺序和本地化错误,需要钩子吗?

问题描述

以下代码会产生错误:

注意:wp_enqueue_script被错误地调用。在wp_enqueue_scripts,admin_enqueue_scripts或login_enqueue_scripts挂钩之前,脚本和样式不应注册或排队。该通知是由waitlist_update_call句柄触发的。请参阅WordPress中的调试以获取更多信息。 (此消息是在版本3.3.0中添加的。)位于5225行的/home/food/domains/xyz.com/public_html/wp-includes/functions.php中。

它还在以下控制台中显示错误:
POST https://theste.com/wp-admin/admin-ajax.php 400 (Bad Request)

函数文件中的PHP代码

wp_enqueue_script( 'update_call',get_theme_file_uri( '/assets/js/update_call.js' ),array('jquery'),null,true );
wp_localize_script('update_call','my_ajax',array('ajax_url' => admin_url('admin-ajax.php')));

//calls Waitinglist data and creates table
add_action('wp_ajax_function_1','update_function'); // logged in user can make a call
add_action('wp_ajax_nopriv_function_1','update'); // non logged in user can make a call

function update_function() {
    global $wpdb;
    $results = $wpdb->query( $wpdb->prepare("UPDATE 'my_table_name' SET `currentstatus` =
    'myupdate1' WHERE ID = '1'"));
    die($results);
}

编辑1:

我试图直接调用它。请原谅。确定下面的拳头解决了入队问题,但POST 400错误仍然存​​在。错误是

POST https://x.com/wp-admin/admin-ajax.php 400 (Bad Request)

单击应该触发的按钮时,我得到-

Uncaught ReferenceError: update_functionis not defined
    at HTMLButtonElement.onclick

我已将函数文件中的PHP更改为:

function my_scripts() {   
wp_enqueue_script( 'update_call',array('ajax_url' => admin_url('admin-ajax.php')));
//calls Waitinglist data and creates table
}
add_action('wp_enqueue_scripts','my_scripts');

add_action('wp_ajax_function_1','waitlist_update'); // logged in user can make a call

function waitlist_update() {
    global $wpdb;
    $results = $wpdb->query( $wpdb->prepare("UPDATE 'wp_wpdatatable_4' SET `currentstatus` = 
    'myupdate1' WHERE wdt_ID = '1'"));
    die($results);

}

单独的JS文件是:

// JavaScript Document
jQuery.ajax({
    type: 'post',url: my_ajax.ajax_url,action: 'waitlist_update',success: function(data){
        // callback function
    }
});

HTML是:

<button class="seat-btn" ID="update" onclick="update_function()">Go!</button>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)