私は以下の問題があります。私は次のことをしたい。私が開発しているウェブページでは、ユーザーがログに記録されているときに、いくつかの変数を手配しなければなりません。このコードでは、各項目の順序値を隠しフォーム入力に設定することができます。ユーザーが「保存」を押すと、その値がMySQLデータベースに保存されます。ここまでは、それが正常に動作します:jQuery UIでのデフォルト注文
$(document).ready(function() { $(function() {
$("#sortable").sortable({
placeholder: "ui-state-highlight",
helper: 'clone',
sort: function(e, ui) {
$(ui.placeholder).html(Number($("#sortable > li:visible").index(ui.placeholder)) + 1);
},
update: function(event, ui) {
var $lis = $(this).children('li');
$lis.each(function() {
var $li = $(this);
var newVal = $(this).index() + 1;
// $(this).children('.sortable-number').html(newVal);
$(this).children('input').val(newVal);
});
} }
);
$("#sortable").disableSelection();
}); });
これはPHPから出力された(各項目は次のようになり):ユーザーがWebページをリフレッシュすると
<li class="ui-state-default bookred"><input type="hidden" name="grammar1" value="<?php echo $grammar1 ?>"><a data-fancybox="" data-src="exercises/grammar-pronomen.php" href="javascript:;"><i class="fa fa-eye" aria-hidden="true"></i></a><a href="#" class="delete"><i class="fa fa-trash" aria-hidden="true"></i></a> <span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Pronomen</li>
問題が来ます。彼が要素を配置することを選んだ順序は尊重されていない。 MySQLから値を取得することは問題ではありません。問題は、ユーザーが行ったように項目を並べ替えるためにUI内で値を設定することです。
ありがとうございました。
私はあなたが 'update'中にAJAX POSTでフォームを送信するために使用するコードを使用することをお勧めします。このようにして、ユーザーがフォームを送信したときだけでなく変更したときに、データベース内でその注文が更新されます。 DB値が異なるため、ページがレンダリングされるときにPHPが新しい値をプルする必要があるため、これはユーザーのリフレッシュに関する問題を解決する可能性があります。 – Twisty
変更をボタンに保存したくない場合や、ユーザがデータベース、テンポラリテーブルまたはメモリに直接設定するたびにAJAXの位置を指定することができます。セッションやそれに類するもの。 – RPichioli
こんにちは。実際、私は変更を保存する必要があります。さらにユーザーがページにログインした場合、ユーザーは値の順序を確認する必要があります。 –