当前位置: 首页 > 面试题库 >

Wordpress使用Wordpress将Ajax值传递到特定页面

竺鸿骞
2023-03-14
问题内容

我想将变量传递到特定页面。我找到了一个简单的示例,解释了如何在Wordpress中使用Ajax。

JavaScript:

jQuery(document).ready(function($) {

// We'll pass this variable to the PHP function example_ajax_request
var fruit = 'Banana';

// This does the ajax request
$.ajax({
    url: ajaxurl,
    data: {
        'action':'example_ajax_request',
        'fruit' : fruit
    },
    success:function(data) {
        // This outputs the result of the ajax request
        console.log(data);
    },
    error: function(errorThrown){
        console.log(errorThrown);
    }
});

});

插入的一段PHPfunctions.php

function example_ajax_request() {

// The $_REQUEST contains all the data sent via ajax
if ( isset($_REQUEST) ) {

    $fruit = $_REQUEST['fruit'];

    // Let's take the data that was sent and do something with it
    if ( $fruit == 'Banana' ) {
        $fruit = 'Apple';
    }

    // Now we'll return it to the javascript function
    // Anything outputted will be returned in the response
    echo $fruit;

    // If you're debugging, it might be useful to see what was sent in the $_REQUEST
    // print_r($_REQUEST);

}

// Always die in functions echoing ajax content
  die();
 }

add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );


   wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' =>   admin_url( 'admin-ajax.php' ) ) );

不幸的是我不能传递变量。我检查了代码,并得到以下错误:

Error: ajax_object is not defined

您是否知道另一种获得相同结果的方法?


问题答案:

您距离很近,但缺少一些小东西……

我在评论中的意思是,您需要'ajax-script'在两种情况下都使用这种方式:

add_action('wp_enqueue_scripts', 'add_js_scripts'); 
add_js_scripts(){
    wp_enqueue_script( 'ajax-script', get_template_directory_uri().'/js/script.js', array('jquery'), '1.0', true );
    wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajaxurl' =>   admin_url( 'admin-ajax.php' ) ) );
}

更改 $_REQUEST$_POST

function example_ajax_request() {

    // The $_REQUEST contains all the data sent via ajax
    if ( isset($_POST) ) {

        $fruit = $_POST['fruit'];

        // Let's take the data that was sent and do something with it
        if ( $fruit == 'Banana' ) {
            $fruit = 'Apple';
        }

        // Now we'll return it to the javascript function
        // Anything outputted will be returned in the response
        echo $fruit;

        // If you're debugging, it might be useful to see what was sent in the $_POST
        // print_r($_POST);

    }

    // Always die in functions echoing ajax content
      die();

 }

新增add_action( 'wp_ajax_nopriv_ … )

add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' ); // <= this one
add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );

对于您的jQuery脚本script.js文件,有2件重要的遗漏小事情:

jQuery(document).ready(function($) {

    /* We'll pass this variable to the PHP function example_ajax_request */
    var fruit = 'Banana';

    /* This does the ajax request */
    $.ajax({
        url: ajax_object.ajaxurl, /* <====== missing here */
        type : 'post', /*    <========== and missing here */
        data: {
            'action':'example_ajax_request',
            'fruit' : fruit
        },
        success:function(data) {
            /* This outputs the result of the ajax request */
            console.log(data);
        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });

});

现在应该可以工作了……

参考文献:

  • 在没有插件的情况下在WordPress网站上将AJAX与PHP结合使用

  • 如何在WordPress插件或主题中使用Ajax?



 类似资料:
  • 我正在尝试使用jquery将值从一个JSP页面传递到另一个页面。在下面的代码中,我想将变量“Process Id”传递到另一个页面。加载下面的JSP页面后,该值应该传递到另一个页面。 我收到错误:“procId未定义”

  • 我有两个简单的页面。我需要将用户填写的文本框的值发送到另一个简单页面。我已经放弃了如何在wordpress页面之间传递数据。我得到了以下错误: 警告: sizeof():参数必须是一个数组或一个对象,在第175行的D:\xamp\htdocs\wordpress\wp-Content\plugins\alle-php-in-post-and-page\allowphp.php中实现Countabl

  • 我已经创建了liferay portlet,在其中,我只需从Api获取天气数据,并通过ajax获取数据,如下所示,现在我想将这些json数据从ajax传递到portlet页面,并将其保存在portlet文件中。我是liferay的新手,请任何人指导如何做到这一点。 这是portlet文件

  • 我正在制作一个自定义WordPress主题,其中我需要两种类型的页面。 一个索引页面,包含所有最近帖子的摘录。这个作品。(概述后页) 当你点击一个帖子的页面,显示帖子的全部内容。 现在,索引页面工作正常,并显示所有最近的帖子。但是当我点击一篇文章时,我会带着那篇文章进入索引页面模板。相反,我想转到另一个显示完整文章的页面模板。 我一直在尝试许多事情,寻找解决方案,但运气不好。我希望有人能帮助我。

  • 问题内容: 我通过AJAX和WordPress分页加载了一些帖子,并使用以下函数来计算分页: 问题是通过AJAX创建了分页,因此使此链接看起来像: 但是,我想要达到的实际URL就是为此: 有没有办法在AJAX上使用此功能,并且仍然获得正确的分页URL? 问题答案: 我可以为您想到三个选择: 编写自己的版本将允许您指定基本URL 在调用时覆盖变量 要调用该函数,请返回整个分页的HTML,然后使用JS