0

我有以下功能可以将我的可排序 portlet 保存在数据库中。当我保存排序的顺序时,在相应列中有一个 portlet 数组的变量 order 让我很难过。实际上它应该返回数组的值,但在控制台甚至数据库中,当我尝试保存它时,它会保存为“数组”作为字符串而不是值字“数组”

function saveOrder() {
  $(".column").each(function(index, value){
    var colid = value.id;
    var order = $('#' + colid).sortable("toArray");
    for ( var i = 0, n = order.length; i < n; i++ ) {
       var v = $('#' + order[i] ).find('.portlet-content').attr('collapse');
       var h = $(this).find(".portlet").is(':visible');
       if (typeof v=="undefined") { v = "0"; }
          order[i] = order[i] + ":" + v + ":" + h;
     }
     $.ajax({ 
        type: "post",
        url: "save.php", 
        data: {
           order_status: order,
           order_Id: colid,
           username: <?php echo $username; ?>
         },
    dataType: 'json', 
        success:  function(data) { console.log(data); alert('sent successfully.'); }
     });  
});

我真的被困住了,非常感谢早期的回应。提前致谢。

4

1 回答 1

0

我认为你应该在发送之前用 JSON 编码对象:

$.ajax({ 
        type: "post",
        url: "save.php", 
        data: "data=" + JSON.stringify({
             order_status: order,
             order_Id: colid,
             username: <?php echo '"', $username, '"'; ?>
        }),

并在服务器 save.php 脚本中使用

$post_data = json_decode($_POST['data']);

这有帮助吗?

于 2012-12-28T09:03:38.510 回答