هل يمكن أن يعمل تحديث jquery القابل للفرز مرة واحدة فقط؟

StackOverflow https://stackoverflow.com/questions/1425453

  •  07-07-2019
  •  | 
  •  

سؤال

هل تحتاج إلى طريقة لإظهار العنصر في div، ولكن عندما أستخدم ajax، أرسل البيانات إلى list.php. لا يمكن أن يعمل؟

بي أتش بي:

<?php
mysql_connect('localhost','user','password');
mysql_select_db('fruit');
$days = 3;
for($i=1;$i<=$days;$i++)
{
?>



<ul id="sortable">
    <?php
    $sql = "select * from menu where columnNo = '$i' order by orderNo ASC";
    $result= mysql_query($sql);
    //$row=mysql_fetch_assoc($result);
    //print_r($row);
    while($row=mysql_fetch_assoc($result))
    {
        echo '<li id="list_' . $row['id'] . '">' . $row['title'] . "</li>\n";//
    }

    ?>
    </ul>

<?php
}
?>

مسج:

$(function(){
     $("ul").sortable({
        connectWith:"ul",
        update:function()
        {           
            serial = $("ul").sortable("serialize");
            $.ajax({
                data: serial,                
                url:"list.php",
                type:"post",
                error:function(){
                    alert("Error!");
                },
                success:function(data){
                    $("#serverResponse").html(data);
                }
            });
            //alert(serial);
        }
     });

    $("#sortable").disableSelection();


});

list.php

<?php

mysql_connect('localhost','root','xingxing');
mysql_select_db('fruit');

$list = $_POST['id'];

for($i=0;$i<count($menu);$i++)
{


    $sql =  "update menu set orderNo= '$i' where id = '$menu[$i]'";
    mysql_query($sql);
}

?>

لكن القائمة list.php لم تعمل.لا أعرف لماذا. هل يستطيع أحد مساعدتي؟شكرًا!

هل كانت مفيدة؟

المحلول

لست متأكدًا مما إذا كان هذا سيساعدك، ولكنك تحاول التحديث في كل حدث إعادة طلب (هل هذا ضروري حقًا؟).

قد يكون من الحكمة استخدام مهلة جافا سكريبت للتحديث بعد بضع ثوانٍ من الخمول بعد تحديثا.أنا شخصياً أستخدم هذه الطريقة وهي تجعل الأمور تسير بشكل أكثر سلاسة.

في إعداد jQuery .sortable() الخاص بك، أضف ما يلي:

start: function(event, ui){
    clearTimeout(allow_update);
},
update: function(event, ui){
    allow_update = window.setTimeout(UpdateOrdering, 3000);
}

ثم أضف varallow_update = null; في مكان ما و تحديث الطلب الوظيفة التي يتم استدعاؤها عند انتهاء المهلة (في حالتي 3000 مللي ثانية)، مع وظيفة التحديث الخاصة بك هناك.

أتمنى أن يساعدك هذا :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top