Ajax调用无法在wordpress中运行

时间:2017-06-14 04:10:27

标签: php jquery ajax wordpress

我在网上提到了一些例子,并修改了functions.php和前端模板来激活ajax调用以获取一些数据。但是我很难理解锄头从请求的网址返回数据。

在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

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

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

请解释一下。另外我想通过传递关键字来激活对查询数据库的ajax调用,我怎么能在wordpress中做到这一点?

3 个答案:

答案 0 :(得分:1)

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

set glob

(或者,如果您已为其设置,则可以将其包含在您的网址中,如下所示)

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

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

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

答案 1 :(得分:1)

你必须在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();
}

答案 2 :(得分:0)

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

在这里你要做一个回调函数。 Wordpress dsnt使用特定网址。

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