0

我被 jQuery/ajax 打败了。

我正在尝试使用在称为使用 jQuery 可排序的 php 脚本中计算的值更新页面上的多个表行。

我可以很容易地更新一行。不知道如何将 ajax 脚本的结果添加到数组中并将其发送回,然后对行进行排序和更新。

这是我的javascript:

<script>
$(function() {                                                           
    $( "#sort tbody" ).sortable({ 
        update : function () { 
            var order = $('#sort tbody').sortable('serialize'); 
            $("#subtotal").load("ajax_update_line_order.php?"+order); 
        },
        placeholder: "ui-state-highlight" 
    }); 
    $( "#sort tbody" ).disableSelection();
});
</script>

html 是一个简单的表格。我可以给每个人一个唯一的 id 或类(不确定是哪个),例如 row0、row1、row2 等,对应于位置的数字。

这是我的 ajax_update_line_order.php:

<?php
........ 

foreach ($_GET['listItem'] as $position => $item)
{
   //Update position in mysql DB here (all ok)

   //Calculations here (all ok)

   //Add calculated result and position to an array
   $array[] = $calculation; (the array key will match the position here, so guess I can use this to reference when updating the table rows)

}

print_r($array); //Not sure how to get this array back to read and update the page
exit();
?>

任何帮助将非常感激。

提前致谢。

4

1 回答 1

1

首先,通过 JSON 编码而不是print_r'ing 来返回数组。后者旨在用于 var 转储,即调试,而不是编程操作。

exit(json_encode($array));

然后在您的 JS 中,您需要对 AJAX 请求进行成功回调,将(自动)传递给已解析的 JSON,即作为您的 PHP 数组开始的内容。然后我们遍历该数组,并为其中的每个项目输出一行。

var tbody = $('#sort tbody')
$("#subtotal").load("ajax_update_line_order.php?"+order).done(function(data) {
    for (var i=0, len = data.length; i<len; i++) {
        var row = $('<tr />');
        /* then append some TDs to the row */
        tbody.append(tr);
    }
});

如果您是新手done(),请阅读 jQuery 延迟对象(AJAX 请求就是其中一个示例)。

于 2013-09-15T16:06:51.507 回答