【问题标题】:Ajax in Wordpress pluginWordpress 插件中的 Ajax
【发布时间】:2011-10-03 07:16:45
【问题描述】:

我正在创建一个简单的 wordpress 插件并尝试使用 AJAX,但我在 ajax 响应中总是得到 0。

<script type="text/javascript" >
jQuery(document).ready(function($) {

var data = {
    action: 'my_action',
    whatever: '1234'
};


jQuery.post("http://localhost/taichi/wp-admin/admin-ajax.php", data,   function(response) {
    alert(response);
});
});
 </script>
<?php
add_action('wp_ajax_my_action', 'my_action_callback');
add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' ); 




function my_action_callback() {

echo "test";
die();

}

我做错了什么?

【问题讨论】:

标签: ajax plugins wordpress


【解决方案1】:

您必须将 add_action 放在文件的完整底部,否则它将找不到回调函数

【讨论】:

    【解决方案2】:

    尝试改变:

    jQuery.post("http://localhost/taichi/wp-admin/admin-ajax.php", data,   function(response)
    

    收件人:

    jQuery.post(ajaxurl, data, function(response) 
    

    并首先检查它是否在管理端工作。它应该可以正常工作。

    【讨论】:

      【解决方案3】:

      错误返回值

      如果请求 url 为 wp-admin/admin-ajax.php 时 AJAX 请求失败,它将根据失败的原因返回 -1 or 0。

      Read this

      编辑

      admin-ajax 始终返回默认 '0' 作为输出。所以当您发出警报响应时,您将 0 only.在回调函数中使用 die() 将终止它。

      【讨论】:

      • 但为什么会失败?有什么办法可以解决吗?
      • 我正在使用 die();在回调函数中 ------> function my_action_callback() { echo "test";死(); }
      • 也许我的回调函数由于某种原因没有被调用。我尝试在插件和主题的 index.php 文件中使用此代码,但没有成功。
      • @Waqar:这里有类似的问题wordpress.org/support/topic/…。他在回调结束时使用了一些数字,但我不确定
      • 我也试过了,但没有运气,但感谢您发送链接。
      【解决方案4】:

      遇到了同样的问题,原来我的回调在一个 php 文件中,该文件只包含在我的“主题选项”页面中。

      要检查该函数是否能够触发 admin-ajax.php 尝试将 var_dump(function_exists("your_callback_name")); 添加到 wp-admin/admin-ajax.php 的底部(在 die( '0' ); 之前),然后查看你的 ajax 输出。

      【讨论】:

        【解决方案5】:

        在您的插件文件中尝试以下代码。或在function.php中

        jQuery(文档).ready(函数($){ var ajaxURL = 'http://localhost/taichi/wp-admin/admin-ajax.php'; var dataString = 'action=mnd_news'; $.ajax({ 类型:“发布”, 网址:ajaxURL, 数据:数据字符串, 缓存:假, 成功:函数(响应){ 如果(响应!='错误'){ 警报(响应); } } }); }); add_action('wp_ajax_mnd_news', 'get_mnd_ajax'); add_action('wp_ajax_nopriv_mnd_news', 'get_mnd_ajax'); 函数 get_mnd_ajax() { 回声“测试”; 死(); }

        【讨论】:

          猜你喜欢
          • 2015-06-30
          • 2015-05-12
          • 2019-01-01
          • 1970-01-01
          • 2022-01-11
          • 2013-07-25
          • 1970-01-01
          • 2015-09-06
          • 1970-01-01
          相关资源
          最近更新 更多