【问题标题】:Post PHP JSON encoded array using jQuery使用 jQuery 发布 PHP JSON 编码数组
【发布时间】:2011-12-06 15:03:19
【问题描述】:

我知道这个问题以前曾以许多不同的方式提出过。我在将 JSON 编码的数组解析到我的域中的另一个页面时遇到了困难。

我有这个 php 代码:

<?php 
    $json_results = json_encode($results);
?>

这是 $json_results 的示例:

[{"Status":"example status 2","Contact ID Number":"1","Date Entered":"2011-06-15","Date Assigned":"2011-06-15" ,"上次修改日期":"2011-06-15","过世日期":null,"链接到注册人 1":"Mike Murdoc","关系 1":"父亲","授权 1":"1 ","链接到注册人 2":"Sam Murdoc","关系 2":"丈夫","授权 2":"1","位置":"Zues Funeral Home","销售经理":"Dan Thompson ","Counselor":"Steve Brown","注册号":"1","注册日期":"2001-05-11","计划 1 号":"2","计划 1 日期":" 2003-11-05","Program 1 Name":"Non Registrant Test Program - Advantage","Program 2 Number":"--","Program 2 Date":"--","Program 2 Name": "--","First Name":"Onelia","Last Name":"Murdoc","Address Location 1":"home","Address 1":null,"City 1":"Houston","州/省 1":"德克萨斯","邮政编码 1":"77019","家庭电话":"--","工作电话":"--","手机":"-- ","Pager":"--","Other Phone":"--","Email":null,"Sales Type":"Pre-Need","Note 1":"This is Note 3. This是注3。T这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。这是注3。"}]

这是$.ajax 脚本:

<script type='text/javascript' >
    $(document).ready(function(){ 
        var results = <?php   echo($json_results);?>;
        $("#xls_download_button").click(function(e) {
            e.preventDefault();
            $.ajax({
                type:  'post', 
                cache:  false,
                url:  './libs/common/test.php',
                data: results
            });                 
        });
    });
</script>

这是test.php 文件:

<?php 
    echo 'Jason Data: ' . $_POST['data'];
    $results = json_decode($_POST['data']);
    // do something with results ...
?>

当点击#xls_download_button 时,会触发 post 事件,但不会在 post 中传递任何数据(在 firebug 中查看)。

作为最终结果,我唯一要做的就是将数组数据传递给export_to_excel.php 文件(目前用 test.php 代替故障排除),export_to_excel.php 创建一个excel文件然后返回.

您能看出这里出了什么问题,或者可能是一种将这些数据传递到 PHP 页面的更好方法吗?

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    那是因为你需要传递你的数据。

    <script type='text/javascript' >
      $(document).ready(function(){ 
        var results = <?php   echo($json_results);?>;
        $("#xls_download_button").click(function(e) {
          e.preventDefault();
          $.ajax({
            type:  'post',
            data: 'data=' + results            <========
            , cache:  false
            , url:  './libs/common/test.php' 
          });                   
        });
      });
    </script>
    

    【讨论】:

    • 如果您需要从 $_POST["data"] 访问它,它将是:data: {data: results}
    • 好的,我这样做了,并且知道 firebug 显示发布数据,但我在成功处理程序中看不到任何数据:test.php 像这样的脚本: $.ajax({ type: 'post' , cache: false , data: 'data='+results , url: '. php',成功:函数(响应){警报(响应);}});成功的警报显示为空白。
    【解决方案2】:

    我没有看到你在哪里给 jQuery 发布数据

      $(document).ready(function(){ 
        var results = <?php   echo($json_results);?>;
        $("#xls_download_button").click(function(e) {
          e.preventDefault();
          $.ajax({
            type:  'post'
            , data: {'json_results':json_results}
            , cache:  false
            , url:  './libs/common/test.php' 
          });                   
        });
      });
    

    现在在test.php 中,您将拥有$_POST['json_results'],其预期值为JSON 字符串,需要对其进行解码。

    【讨论】:

    • 在原始帖子中是的,我错过了将数据线放在示例中。发布后不久,我在...中对其进行了编辑,对不起,感谢您提供的示例。
    • 在最终功能中,数据被传递给 export_data_to_excel.php,它应该将数据处理成与 XLS 兼容的格式,并且应该显示一个“保存”对话框。这个 $.ajax 帖子如何返回 export_data_to_excel.php 脚本中生成的“保存”对话框?
    • 您将临时数据保存在哪里?当您调用 export_data_to_excel.php 时,数据会被解析,但您需要将其保存在某处(在要求用户保存之前),返回保存对话框,或者成功并从 $ajax.success() 显示保存对话框,以及何时用户确认您需要从临时位置获取数据并将其存储在您需要的地方。
    • 好的,你的描述很棒。谢谢!
    • 我还有一个障碍。在 test.php 它返回: > [object Object],[object Object],[object Object] 这显然与我在第一篇文章中显示的输出不同 - 你认为发生了什么?
    【解决方案3】:
    $.ajax({ 类型:'发布', 缓存:假 , url: 'http://localhost/projectname/yourfilepath_and_name.php', 数据:“结果=”+结果, 成功:函数(resp){ 警报(响应); } }); //在php中 做 print_r($_POST);

    【讨论】:

    • 这将不起作用,因为您将结果作为 JSON 对象。不是刺痛
    猜你喜欢
    • 2013-10-23
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多