【问题标题】:Ajax function call to php functionajax函数调用php函数
【发布时间】:2020-05-07 22:01:45
【问题描述】:

我的一个 php 文件中定义了一个简单的 php 函数,如下所示

add_action('wp_ajax_test','test');
add_action('wp_ajax_nopriv_test','test');
function test(){
    echo "Hello";
}

我正在使用下面的 ajax 函数调用来调用上面的“测试”函数

jQuery(document).ready(function(){ 
    jQuery('#prev_button_id').click(function(){
        jQuery.post(
            myAjax.ajaxurl,
            {
                action:"test",
                success: (response)=>{
                    console.log('Success:'+ response);
                },
                error:(response)=>{
               console.log('Failure:'+ response);
                }
        });
    });
});

我期待“Hello”的控制台输出,但我得到低于未定义的响应

Success:undefined
Failure:undefined

【问题讨论】:

  • 我认为你应该尝试returning "Hello" 而不是echo 它。我相信echo 将字符串输出到输出媒体上。
  • 试过return "Hello"; 没有运气,同样的未定义响应。 @rkalra
  • 回声是正确的。您绝对必须在处理程序的末尾有一个 wp_die 或退出。不确定它是否会导致您的问题,但如果没有它,AJAX 处理程序将无法正常工作。
  • 已添加 exit(); 响应没有变化
  • 对不起,我帮助人们编写代码,但我不提供用户应该能够自己完成的代码。请阅读文档 - codex.wordpress.org/AJAX_in_Plugins。另外,“使用 json 的回声是正确的”应该是“使用 json 的回声是正确的”

标签: php jquery ajax wordpress


【解决方案1】:
jQuery(document).ready(function(){ 
    jQuery('#prev_button_id').click(function(){

        var params =  {action:"test"}

        jQuery.post(myAjax.ajaxurl,params,function(data){
            if( data ){
                console.log ( data );
            }

        });

    });
});



add_action( 'wp_ajax_test','test' );
add_action( 'wp_ajax_nopriv_test','test' );
function test() {
    echo "Hello";
    die;
}

试试这个代码,不要忘记在 AJAX 调用之后die 确保您在 myAjax.ajaxurl 中获得正确的 AJAX URL

【讨论】:

    【解决方案2】:

    我按照下面的视频一步一步地操作,效果很好。 可能它与nonce有关 AJAX in WordPress using admin-ajax.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 2011-05-08
      • 2011-01-17
      • 2018-04-03
      • 1970-01-01
      相关资源
      最近更新 更多