【问题标题】:Passing PHP Array to AJAX (Success) Function将 PHP 数组传递给 AJAX(成功)函数
【发布时间】:2020-03-16 17:15:22
【问题描述】:

我想在 AJAX 调用的成功函数中将一个数组传递给我的 AJAX 函数。这个数组是我的数据库中使用global $wpdb; 的数据,因为这很容易使用而且我知道如何使用。有没有办法将此数组传递给 AJAX 函数?或者有没有办法只在 AJAX 中获取数据?

我在我的脚本标签中得到了这个并且它正在工作:

    jQuery(document).ready(function(){

        jQuery('#date-select').on('change',function(){

        var seldate= jQuery(this).val();


        if(seldate!=''){

            var seldateEdited = seldate.replace("T", " ");

            jQuery.ajax({

                type:'POST',

                url:'http://esr-berlin.de/wp-admin/admin.php?page=einteilung_erstellen',

                data:'var='+seldate,

                success:function(html){

                            var output = '<option value="">Wähle HSR1</option>';

                            jQuery.each(html.data, function(i,s){
                                var newOption = s;

                                output += '<option value="' + newOption + '">' + newOption + '</option>';
                            });

                            jQuery('#hsrPop').empty().append(output);


                     }

            }); 

        }

    });
});

编辑

我忘记了一些重要的事情。对于数组或特别是对于 sql 查询,我需要一个我在 javascript 中拥有的变量。所以我基本上需要另一个 AJAX 调用,对吧?我该怎么做?

【问题讨论】:

  • 你哪里失败了?
  • 我无法将 php 数组传递给 ajax 函数。我还需要在我的 php 中为数组获取变量 seldate,然后才能传递它

标签: javascript php jquery mysql ajax


【解决方案1】:

您可以在 PHP 文件中对数组进行编码并返回它。它只会向您的 AJAX 函数返回一个字符串

json_encode($array)

https://www.php.net/manual/en/function.json-encode.php

然后就可以用它来转换成Javascript数组进行处理了

JSON.parse(json)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

【讨论】:

  • 谢谢。我忘记了一件重要的事情。对于数组或特别是对于 sql 查询,我需要一个我在 javascript 中拥有的变量。所以我基本上需要另一个 AJAX 调用,对吧?我该怎么做?
  • 你会怎么做?
  • @kennethenglisch 您也可以使用 JSON 将数组传递到 ajax 文件中,它只是以相反的方式完成,因此在 Javascript 中创建一个数组,使用 JSON.stringify(array) 将其转换为 JSON PHP json_decode(json)
【解决方案2】:

假设您的服务器端代码(admin.php)类似于:-

$result = array();

//your code here to fetch data dynamically

$result['status'] = True; //based on your conditions optional
$result['data'] = array(0=>"option1",1=>"option2",2=>"option3") ;
echo json_encode($result);

希望这会有所帮助。

jQuery(document).ready(function()
{
        jQuery('#date-select').on('change',function()
        {
            var seldate= jQuery(this).val();
                if(seldate!='')
                {
                    var seldateEdited = seldate.replace("T", " ");
                    jQuery.ajax({
                                        type:'POST',
                                        dataType:'json',         //added to receive json format data
                                        url:'http://esr-berlin.de/wp-admin/admin.php?page=einteilung_erstellen',
                                        data:'var='+seldate,
                                        success:function(html)
                                        {     
                                         //here you can check if html.status is True/False .. optional
                                                var output = '<option value="">Wähle HSR1</option>';
                                                jQuery.each(html.data, function(i,s)
                                                {
                                                    var newOption = s;
                                                    output += '<option value="' + newOption + '">' + newOption + '</option>';
                                                });
                                                jQuery('#hsrPop').empty().append(output);
                                         }

                                }); 

                }

        });
});

【讨论】:

  • 现在它甚至没有改变任何东西。我认为dataType: "json", 是错误发生的地方。如果我删除这一行,一切都很好。看起来它不会再成功了。
  • 你知道如何将我的 wpdb 数组导入 AJAX 吗?这可能是比去更简单的解决方案:服务器->客户端->服务器->客户端。它只会是:服务器->客户端->客户端
  • 您是否尝试过 console.log(html) 的成功功能。它产生什么?
  • 不知何故不会再进入成功方法
  • 您是否在网络选项卡中看到 ajax 调用,您能否更新 admin.php 代码以清楚了解您的服务器端代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 2014-01-25
  • 2011-01-25
  • 1970-01-01
  • 2015-08-21
  • 2012-07-19
相关资源
最近更新 更多