【问题标题】:Wordpress Ajax returns '0'Wordpress Ajax 返回“0”
【发布时间】:2014-12-04 05:36:26
【问题描述】:

我可以找到很多类似的问题,但没有任何帮助,所以必须发布我自己版本的这个问题。

我有 2 个 php 文件:

  • playing.php(包含网页表单并发送ajax调用)
  • plug_search.php(有表单处理代码)

在我开始尝试使用 ajax 之前,表单处理工作完美,查询按预期工作,并根据搜索参数返回正确的结果。现在,我想使用 ajax,所以结果返回到同一页面,它总是返回 '0'。我尝试了(似乎)我能做的一切,排除了最可能的原因(不正确的函数/调用名称) - 没有运气。感觉缺少一些非常简单的东西,我怀疑问题出在函数的声明中,但看不出有什么问题(似乎调用永远不会到达plug_search.php中的处理函数)。我剥离了所有查询代码,只是试图返回一个简单的字符串 - 仍然是相同的“0”。 如果您能提供帮助,我将不胜感激!

playing.php

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
   $(document).ready(function(){
      function search(){
         var plug=$("#autocomplete-dynamic").val();
         var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
         if(plug!==""){
            $("#result").html();
            $.ajax({
                type: "GET",
                url: ajaxurl,
                data: {
                    action: 'ajax_return_search_results',
                    plug: 'country'
                },
                success:function(data){
                   alert(data);
                }
            });
         }
      }

      $("#button").click(function(){
         search();
      });

      $('#search').keyup(function(e) {
         if(e.keyCode == 13) {
            search();
         }
      });
   });
 </script>

plug_search.php

<?php

add_action( 'wp_ajax_ajax_return_search_results', 'myajax_return_search_results' );
add_action( 'wp_ajax_nopriv_ajax_return_search_results', 'myajax_return_search_results' );

function myajax_return_search_results() {
   echo "Success";
   die();
}

?>

plug_search.php - 完整版

function myajax_return_search_results() {

$value = $_GET['plug'];
$value2 = $_GET['country'];

$sql = "SELECT name, image_url, amazon_url, plug_type FROM adapters_list WHERE plug_type = '$value' AND country LIKE '%$value2%'" or die("Error in the consult.." . mysqli_error($link));

$result = $link->query($sql);

while($row = mysqli_fetch_array($result)) { ?>
<div id="output-product" style="border: 1px solid #333; font-family: Helvetica, sans-serif; font-size: 20px;"><?php echo $row["name"] . "<br />";?>
<?php echo "</div>";

die();

}

【问题讨论】:

  • 你确定你的plug_search.php文件在wordpress环境中被加载了吗?
  • 不是 100% 确定“在 wordpress 环境中加载”是什么意思,但我正在使用 wordpress 网站,这两个文件位于我正在构建的自定义插件文件夹中。
  • 我的意思是,如果您在“plug_search.php”文件的顶部添加die('getting loaded');,您会看到什么?
  • 这意味着您的文件plug_search.php 没有在wordpress 环境中加载。如果您将myajax_return_search_results() 粘贴到functions.php 中,您的问题将得到解决(暂时)。

标签: javascript php jquery ajax wordpress


【解决方案1】:

将此代码添加到您的functions.php

add_action( 'wp_ajax_ajax_return_search_results', 'myajax_return_search_results' );
add_action( 'wp_ajax_nopriv_ajax_return_search_results', 'myajax_return_search_results' );

function myajax_return_search_results() {
   echo "Success";
   die();
}

【讨论】:

  • 好的,这个东西工作了,现在返回“成功”。但它似乎与我在plug_search.php 中的代码完全相同。为什么它从那里不起作用?
  • 因为您的plug_search.php 文件没有被加载。在此处粘贴您的插件主文件内容,我将告诉您如何从插件本身中获取它。
  • 好的,将plug_search.php中的初始处理代码添加到functions.php中。结果:页面根本没有加载,空白屏幕,控制台为空。如果我用查询注释掉那个初始代码,页面就会显示出来,所以那个函数有问题。我会把它放在帖子本身,这样更容易阅读。
  • 您在查询中缺少; 的朋友,$sql = "SELECT name, image_url, amazon_url, plug_type FROM adapters_list WHERE plug_type = '$value' AND country LIKE '%$value2%'"@ 987654325@ or die("咨询出错.." .mysqli_error($link));并删除这部分or die("Error in the consult.." . mysqli_error($link));
  • 所以只剩下这么多部分需要查询:$sql = "SELECT name, image_url, amazon_url, plug_type FROM adapters_list WHERE plug_type = '$value' AND country LIKE '%$value2%'";
【解决方案2】:

数据返回错误代码,因为您使用的是 .success 而不是 .done

  $.ajax({
                type: "GET",
                url: ajaxurl,
                data: {
                    action: 'ajax_return_search_results',
                    plug: 'country'
                }

            }).done(function(data){
                   alert(data);
                });

【讨论】:

  • 更新到 .done - 现在,它甚至不显示警告窗口(弹出 .success)
【解决方案3】:

您在 ajax 中缺少数据类型 尝试添加它

$(document).ready(function(){
      function search(){
         var plug=$("#autocomplete-dynamic").val();
         var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
         if(plug!==""){
            $("#result").html();
            $.ajax({
                type: "GET",
                url: ajaxurl,
                dataType: 'html',
                data: {
                    action: 'ajax_return_search_results',
                    plug: 'country'
                },
                success:function(data){
                   alert(data);
                }
            });
         }
      }

      $("#button").click(function(){
         search();
      });

      $('#search').keyup(function(e) {
         if(e.keyCode == 13) {
            search();
         }
      });
   });

【讨论】:

  • 已添加 dataType: 'html', - 仍返回“0”
猜你喜欢
  • 2015-09-06
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多