【问题标题】:Passing object array via jquery ajax to php not working通过jquery ajax将对象数组传递给php不起作用
【发布时间】:2014-01-20 09:15:47
【问题描述】:

我正在尝试创建一个关联数组,其中记录 ID 作为键,顺序作为值。然后我想通过 ajax 将它传递给 php,在那里我将遍历数组并更新记录。但它不起作用我似乎在 json_decode($_REQUEST['orderArray'], true); 处得到空值;

代码有什么问题:

jquery:

 //Make project task table rows sortable
$('#Task_table tbody').sortable({
    items: "tr:not(.disable_sort)",//disable sortable on header row
    helper: fixHelperModified, //call helper function
    update: function(event, ui) {
        var order = {};//create object
        $('#Task_table tr').each(function(){//loop through rows
            var id = $(this).children('td:first-child').find(".order_number").attr("rel");
            var order_number = $(this).children('td:first-child').find(".order_number").val();
            //fill object array with keys(task->id) and values (task->order_number)
            order[id] = order_number;
        });

        //convert array to json
        var jsonArray = JSON.stringify(order);
        //prepare POST data
        var dataString = { 'orderArray':jsonArray };

        $.ajax({
            type: "POST",
            url: "index.php?module=Project&action=update_order",
            data: dataString,
            success: function() {
               // location.reload();
            }
        });
    }
});

这是通过邮寄方式发送的: orderArray {"4b0df1da-8b2d-7776-0026-52d0b3cefbfa":"3","161699ae-6db0-43d6-e85b-52ca07767b0f":"1","8da4cfc3-b56d-12da-e34c-52d09ed0b310":"2"}

php:

//updates the order of the tasks
function action_update_order(){
    //create object/array from json data
    $orderArray = json_decode($_REQUEST['orderArray'], true);

    var_dump($orderArray);

    foreach($orderArray as $id => $order_number){

        $GLOBALS['log']->fatal('order: '.$order_number[$id]);

        $task = new ProjectTask();
        $task->retrieve($id);
        $task->order_number = $order_number;
        $task->save();
    }
}

正如我所说,我似乎无法遍历 jasondecode 的结果。作为它的 ajax 也很难调试。

【问题讨论】:

  • 听说过Firebug吗?将向您展示发布的内容和回复。
  • 使用萤火虫,我知道发布了什么:它的这个 orderArray {"4b0df1da-8b2d-7776-0026-52d0b3cefbfa":"3","161699ae-6db0-43d6-e85b-52ca07767b0f":" 1","8da4cfc3-b56d-12da-e34c-52d09ed0b310":"2"} respoce 中有很多东西,但看不到任何 var_dump。
  • 使用 Console.log() 你可以打印到你的开发者控制台,比如 Firebug。您可以打印对象、数组和原始数据类型。
  • var_dump($orderArray) 的结果是什么; ??
  • var_dump($orderArray);显示为空

标签: javascript php ajax jquery


【解决方案1】:

你可以试试改一下吗

var dataString = { 'orderArray':jsonArray };

var dataString = { 'orderArray': order };

【讨论】:

    【解决方案2】:

    由于某种原因,JSON.stringify(order) 将 Html 实体版本的 " 添加到我的字符串中,所以我需要在我的 php 中使用 htmlspecialchars_decode(); 在 json_decode 之前首先。它似乎工作。

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2021-09-05
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      相关资源
      最近更新 更多