php - 来自前端的 Ajax 调用不适用于 WordPress

标签 php ajax wordpress wp-admin

在 WordPress 的前端调用 Ajax 不起作用,我只想根据 id 从数据库获取数据,这是我迄今为止尝试过的。

//Frontend view

<a href="javascript:void(0)" onclick="getDetails(<?=$index;?>)" >
        <?php echo $value ?>
    </a>

//Functions.php

function my_enqueue() {
      wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/assets/js/ajax-script.js', array('jquery') );
      wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
 }

 add_action( 'wp_enqueue_scripts', 'my_enqueue' );
 add_action('wp_ajax_nopriv_more_posts', 'get_more_posts');

function get_more_posts(){
    // How to get id here to query for the database
    echo "Hello World";
    exit(); 
}

// Ajax scripts File
function getDetails(id)
{
jQuery.ajax({
    url: more_posts.ajax_url,
    type: "GET",
    data: {
        action: 'more_posts'
    },
    dataType: "html",
    success: function(response){
        alert(response);
    }
});
}

我收到此错误

reference error more_posts is not defined

最佳答案

//Frontend view

<a href="javascript:void(0)" onclick="getDetails(<?=$index;?>)" >
        <?php echo $value ?>
    </a>

//Functions.php

function my_enqueue() {
      wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/assets/js/ajax-script.js', array('jquery') );
      wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
 }

 add_action( 'wp_enqueue_scripts', 'my_enqueue' );
 add_action('wp_ajax_nopriv_more_posts', 'get_more_posts');

function get_more_posts(){
    // How to get id here to query for the database
    echo "Hello World";
    echo $_GET['id'];
    exit(); 
}

// Ajax scripts File
function getDetails(id)
{
var id = id;
jQuery.ajax({
    url:  url: my_ajax_object.ajax_url,
    type: "GET",
    data: {
        action: 'get_more_posts',
        id: id,
    },
    dataType: "html",
    success: function(response){
        alert(response);
    }
});
}

这应该有效!您不需要绝对路径或带有 ' href 的 var ', url: my_ajax_object.ajax_url ,就足够了,因为您已经添加了 admin-ajax.php 和 wp_enqueue_script 。谢谢

关于php - 来自前端的 Ajax 调用不适用于 WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938556/

相关文章:

php - 仅当记录不存在时如何添加到 MySQL 表?

javascript - 为什么这个对 Controller 的 ajax 调用在特定页面 (Laravel) 中不起作用?

jquery - 如何使用 Perl 将数据返回到 AJAX 调用?

php - wordpress 在 functions.php 第 5 行的非对象上调用成员函数 add_section()

php - 使用 Jquery 复选框数组通过多对 MySql 数据库进行搜索?

php - Xampp控制面板apache错误

wordpress - 如何在metapress页面上添加meta框

css - Wordpress:将事件类添加到 wp_nav_menu 元素

PHP用户定义函数,(新人需要帮助)

jquery - 使用 jQuery ajax 响应 html 更新 div