2013-05-30 40 views
0

我不知道爲什麼我的jQuery UI不會創建一個數組,我可以解析到PHP,這是我的名單jQuery UI的排序不創建數組

<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是致使警報(信息)給出

book[]=title 

我希望能夠在陣列張貼到PHP,使用戶可以改變Ø訂單f根據他在列表中如何改變它的輸出。有人幫

從這裏編輯,我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; 
?> 

回答

3

它在sortable.serializedocumentation說:

...它的工作原理是通過默認查看每個項目的ID格式爲 「setname_number」,並且它會出現一個像 「setname [] = number & setname [] = number」的散列。

但只有一個id在您所設定的是此模式匹配的元素 - 這是book_titlesetname'book'number'title')。所有其他人都不符合這種模式,我想,只是被忽略。

這種最簡單的方法只是改變你的IDS到這一點:

post_firstname 
post_lastname 
post_title 
post_booktitle 

你仍然可以使用原始值,但那麼你就必須提供自己的expression模式(也可能key,如果模式看起來像/()(.+)/)作爲序列化的options。或者你可以考慮另一種方法 - toArray方法。

+0

謝謝你@ raina77ow,我現在改變它給了我所有的人。你知道我怎麼可以將這個結果發佈到我的home.php文件中,以便我可以使用該命令從mysql數據庫中輸出我的結果? –

+0

最簡單的方法就是檢查所有發送的params對應的映射(別名=>列),然後將有效的堆棧添加到'ORDER BY'子句。 – raina77ow

+0

我可以說我完全理解你剛寫了什麼,但這是我試過的,我試圖用xml輸出它,但那不是必須的,我需要的是用戶按照他想要的順序查看信息。我在上面的原始問題中更新了home.php,看看我做了什麼 –