0

我想知道为什么我的 jquery UI 没有创建一个我可以解析为 php 的数组,这是我的列表

<ul id="sortable">
              <li id="firstname" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>firstname</li>
              <li id="lastname" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>lastname</li>
              <li id="title" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>title</li>
              <li id="book_title" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>book_title</li>
            </ul>

这是jQuery

 <script>
$(function() {
    $( "#sortable" ).sortable({
    placeholder: "ui-state-highlight",
    opacity: 0.6,
   update: function(event, ui) {
    var info = $(this).sortable("serialize");
    alert(info);
    $.ajax({
        type: "POST",
        url: "home.php",
        data: info,
        context: document.body,
        success: function(){
        }
  });

}
});
$( "#sortable" ).disableSelection();
});
</script>

这是 alert (info) 给出的结果

 book[]=title

我希望能够将数组发布到 php,以便用户可以根据他在列表中的更改方式来更改输出的顺序。有人帮忙

从这里编辑,我的 home.php 文件

  <?php 
header("Content-type: text/xml"); 
include_once("config.php");

parse_str($_POST['data'], $order);
echo $order; 

$query = "SELECT    `author`.`surname`,`author`.`firstname`,`publication`.`title`,`book`.`book_title` FROM author, book, publication "; 
$resultID = mysql_query($query, $conn) or die("Data not found."); 

$xml_output = "<?xml version=\"1.0\"?>\n"; 
$xml_output .= "<entries>\n"; 

for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){ 
$row = mysql_fetch_assoc($resultID); 
$xml_output .= "\t<entry>\n"; 
foreach($order as $col){
    $xml_output = "\t\t<$col>" . $row[$col] . "</$col\n"; 
}    
$xml_output .= "\t</entry>\n"; 
} 
$xml_output .= "</entries>"; 
echo $xml_output;  
?> 
4

1 回答 1

3

sortable.serialize 文档中说:

...默认情况下,它通过以“setname_number”格式查看每个项目的 id 来工作,它会吐出一个像“setname[]=number&setname[]=number”这样的哈希值。

但是id在您的一组元素中只有一个与此模式匹配 - 它是book_title( setnameis 'book', numberis 'title')。我想所有其他的都不匹配这个模式,只是被忽略了。

最简单的方法就是将您的 id 更改为:

post_firstname
post_lastname
post_title
post_booktitle

您仍然可以使用原始值,但是您必须提供自己的expression模式(并且可能key,如果模式看起来像/()(.+)/)作为序列化的options. 或者您可以考虑另一种选择 - toArray方法。

于 2013-05-30T23:35:41.843 回答