我正在努力让我的ajax请求正常工作。当我解雇我的$ajax
我得到了这个错误。。。
Uncaught ReferenceError: feature_ajax is not defined
这是我的
functions.php
// load our frontend modifiers
require_once(__DIR__ . \'/lib/Frontend.lib.php\');
这是我的
Frontend.lib.php
类php。。。
class Frontend
{
/** frontend constructor */
public function __construct()
{
// enqueue our scripts
add_action(\'wp_enqueue_scripts\', array($this, \'action_wp_enqueue_scripts\'));
// add out ajax actions
$this->ajax_actions();
}
/** frontend enqueued scripts */
public function action_wp_enqueue_scripts()
{
// localize admin ajax
wp_localize_script(\'ajax-actions\', \'ajax_actions\', array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' )
));
// enqueue scripts
wp_enqueue_script(\'ajax-actions\');
}
/** ajax actions */
public function ajax_actions()
{
// admin field postdata ajax actions
add_action(\'wp_ajax_field_postdata\', [__CLASS__, \'field_postdata\']);
// public field postdata ajax actions
add_action(\'wp_ajax_nopriv_field_postdata\', [__CLASS__, \'field_postdata\']);
}
// Field Post Data
public static function field_postdata()
{
global $post;
$post_id = ($_REQUEST[\'id\']);
if($post_id){
$post = get_post($post_id);
setup_postdata($post);
get_template_part(\'ajax/modal\',\'field\');
die();
}
}
}
new Frontend();
当我启动
$ajax
下面的脚本,这是当我得到错误时,没有定义ajax。
但它是在上面的代码中定义的。
下面的脚本是我的theme-min.js
文件
// load feature post data
$.ajax({
cache: false,
timeout: 8000,
url: ajax_actions.ajaxurl,
type: \'POST\',
data: {
action: \'field_postdata\',
id: post_id
},
success: function (data) {
alert(data);
}
});
如果能帮我理解我做错了什么,那就太好了。
谢谢
<小时>
Updated Fixed Code
所以,我改变了什么,使这项工作。我已经在排队了
main-min.js
文件,所以我将
wp_localize_script
使用与我排队的javascript相同的句柄,它就工作了。
// register js in footer
$filename = get_template_directory_uri() . \'/assets/scripts/main-min.js\';
wp_register_script(\'main-js\', $filename, array(), rand(), true);
// localize theme-js ajax actions
wp_localize_script(\'main-js\', \'ajax_actions\', array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' )
));
// enqueue required scripts
wp_enqueue_script(\'main-js\')