Jquery ui sortable不会创建数组

时间:2013-05-30 23:24:26

标签: php jquery mysql ajax jquery-ui

我想知道为什么我的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>

thi是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;  
?> 

1 个答案:

答案 0 :(得分:3)

sortable.serialize documentation中说:

  

...默认情况下,通过查看格式中每个项目的ID来工作   “setname_number”,它吐出像哈希一样的哈希   “的setName [] =&数放大器;的setName [] =号码”。

但是,您的元素集中只有一个符合此模式的id - book_titlesetname'book'number为{{ 1}})。所有其他人都不符合这种模式,我想这只是被忽略了。

最简单的方法就是将你的ID改为:

'title'

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