【问题标题】:Ajax call not working out in wordpressAjax 调用在 wordpress 中不起作用
【发布时间】:2017-11-16 01:04:24
【问题描述】:

我参考了一些在线示例并修改了functions.php 和前端模板来触发ajax 调用来获取一些数据。但是我很难理解数据是从请求的 url 返回的。

在functions.php的最后,我添加了,

wp_enqueue_script('jquery');
function myFunction(){
    echo "hi";
   die();
}
add_action('wp_ajax_myFunction', 'myFunction');
add_action('wp_ajax_nopriv_myFunction', 'myFunction');

在我的自定义模板页面中,我添加了,

var datavalue = 'test data string';

  jQuery.ajax({

      url: "/wp-admin/admin-ajax.php",
      method: "GET",
      data: { 'datavar' : datavalue }

  }).success(function(data) {

      console.log("successfully run ajax request..." + data);

  }).done(function(){

      console.log("I am from done function");

  }).fail(function(){

      console.log("I am from fail function.");

  }).always(function(){

      console.log("I am from always function");

  });

});

运行后,我得到了这些响应。

I am from fail function.  
I am from always function

我不明白如何从特定 url 获取数据并在 ajax 的成功函数中显示结果。

我什至不知道这个 ajax 调用如何调用 function.php 中定义的函数?它们有什么关系?

请解释一下。另外我想通过传递关键字来触发对查询数据库的ajax调用,我该如何在wordpress中做到这一点?

【问题讨论】:

  • 检查您的网络选项卡以了解 AJAX 请求的结果,以了解请求失败的原因。无论在 WordPress 中是否正确定义了操作,请求都应该成功。请求是否到达了正确的位置? JavaScript 代码是否包含错误?
  • 向指定的url发出请求,但是出现错误500。
  • 你去。请找出服务器为什么返回错误。没有错误消息/日志,这只是一个猜谜游戏。

标签: php jquery ajax wordpress


【解决方案1】:

您没有在“数据”中传递“动作”参数。其中包含回调函数的名称。请检查随附的链接。 https://www.sitepoint.com/how-to-use-ajax-in-wordpress-a-real-world-example/

在此您必须创建一个回调函数。 Wordpress dsnt 使用特定的 url。

但是如果你仍然想使用特定的url。按照步骤:- 1.制作wordpress模板。 2.在那里添加您的特定网址代码。 3. 在管理面板中创建一个页面并分配您在上面创建的模板。 4. 现在该页面的永久链接可以用作jQuery ajax 中的特定url。

【讨论】:

    【解决方案2】:

    你的 AJAX 函数应该包含一个 action 参数来告诉 admin-ajax 你想执行哪个函数。

      url: "/wp-admin/admin-ajax.php",
      method: "GET",
      data: {
            action : 'myFunction'
      }
    

    (或者,如果你已经设置好了,那么你可以将它包含在你的 url 中,如下所示)

    url: "/wp-admin/admin-ajax.php?action=myFunction"
    

    另外,functions.php 中的函数应该用 PHP 编写:

    function myFunction(){
        echo 'hello';
        die();
    }
    

    【讨论】:

    • 我尝试在 url 中添加操作参数,也尝试在数据中添加它,但仍然没有得到成功函数的响应
    • 你用有效的php写过你的函数吗?
    • 是的,我确实注意到了我的错误并通过在那里编写有效的 php 进行了更正..但是服务器仍然返回 500 错误
    【解决方案3】:

    你必须在ajax上使用一个动作。

    jQuery.ajax({
          url: "/wp-admin/admin-ajax.php",
          method: "GET",
          data: {
                action : 'myFunction'
               'datavar' : datavalue,
           }
      });
    

    PHP 函数需要编辑。

    function myFunction(){
        echo 'success calling functions';
        wp_die();
    }
    

    【讨论】:

    • 我添加了操作,但仍然从失败函数而不是成功获得响应
    • 是的,我写了一个有效的函数,请检查我编辑的帖子
    • 我已经添加了php示例函数。
    • myFunction 没有被调用
    【解决方案4】:

    除了上述答案之外,在您的function.php 中,使用$_REQUEST。 $_REQUEST 包含从 Javascript 调用通过 AJAX 发送的所有数据。像这样的

    function myFunction() {
    
        if ( isset($_REQUEST) ) {
    {
        global $wpdb;
        $keyword = $_REQUEST["keyword"];
        
        if($keyword){
           
            $query = "
            SELECT `$keyword`, COUNT($keyword) AS Total 
            FROM `profileinfo` GROUP BY `$keyword`
            ";
            $result = $wpdb->get_results($query);
            $data = array();
    
            foreach($result as $row)
            {
                $data[] = $row
            }
        
            echo json_encode($data);
        }
    }
        }
         die();
    }
    add_action( 'wp_ajax_myFunction', 'myFunction' );
    add_action('wp_ajax_nopriv_myFunction', 'myFunction');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      相关资源
      最近更新 更多