jQuery, dizinin PHP silme çalışmıyor

4 Cevap php

Jquery kullanarak dizinleri silmek için çalışıyorum, bu silme ve silme için kodu yürütür 1a.php, kalır gelmez. Ne tam olarak istediğiniz sayfa refresh olmadan dizinin bir silme ve dizin silinmiş bir mesaj görüntüler.

Beni burada yanlış ne yapıyorum bildirin.

Thanks in advance Dave

Please find the code below

// ----------------------------------1a.php
   if ($_POST['al_del']) {
    $dir = $_POST['al_del'];
    //preg_replace('/(\d+)/', '', $_POST['al_del']);
    rmdir('$dir_path/'.$dir);
    echo 'album deleted';
    }

//-----------------------------------1.php where the directories are listed    
    <script>
                                        $('#album_del_form').ajaxForm({
                                            target:'#dir_del',
                                            success: function() {
                                            $('#dir_del').fadeOut(40000);
                                            }
                                        });
                                </script>

                      <div style=" position:relative; top:20px; left:0px; background-color:#BBBBBB; font-family:'Arial Rounded MT Bold'; font-size:12px;">Current Albums</div>
                                <div style=" position:relative; top:20px; left:4px; font-family:'Arial Rounded MT'; font-size:12px;">
                                <? 
                                $album_path1 = "$dir_path/";
                                $cur_dir = opendir($album_path1);
                                chdir($album_path1);
                                $i_count=0;

                                while (($file = readdir($cur_dir)) !== false) {    ?>


                                <?  if (($file != ".") && ($file != "..") && (is_dir($file))){ $i_count=$i_count+1; ?>




                                <div id="dir_del">
                                <form name="album_del_form" id="album_del_form"  method="post" action="1a.php">
                                <input type="image" src="images/delete.gif" name="al_dell" id="al_dell" value="<? echo $file; ?>"/><? echo $file; ?>
                                <input type="hidden" id="al_del" value="<? echo $file; ?>" /></form>
                                </div>


                                <?  } 

                                } ?>
                                <div id="dir_del"></div>
                                </div>


                    </div>

4 Cevap

Ben dosyayı geçiyoruz düşünüyorum:

<input type="hidden" id="al_del" value="<? echo $file; ?>" />

ve a1.php bir dizin bekliyor:

$dir = $_POST['al_del'];

dir boş değilse, rmdir başarısız olur. özyinelemeli dosyaları silmek gerekiyordu. http://www.php.net/rmdir de örneklerinden birini kontrol

@ Dave: formu eklentisi bir sorun yükleniyor olsaydı o davranışı görmek istiyorsunuz, ya da ajaxForm denilen alamadım, ya versiyonları eşleşmeyen. i çağrısından sonra ajaxForm ve uyarı şey sonra sonucu kontrol ve konsol / kundakçı bakmak istiyorum.

http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
http://jquery.malsup.com/form/jquery.form.js?2.36

Kodunuzu görünce, ben bir hata fark:

<div id="dir_del">
  <form name="album_del_form" id="album_del_form"  method="post" action="1a.php">
  <input type="image" src="images/delete.gif" name="al_dell" id="al_dell" value="<? echo $file; ?>"/><? echo $file; ?>
  <input type="hidden" id="al_del" value="<? echo $file; ?>" /></form>
</div>

Bir while döngü içinde bu kod yazmak önüne alındığında, tekrarlanan bu gibi daha fazla unsurlar olacaktır. id='album_del_form' ve div id="dir_del" ile birlikte birden fazla formu olacaktır. Eğer formu görüntülemek biçimini değiştirin.

Ben önerebilirsiniz, bu gibi inşa:

<form name="album_del_form" id="album_del_form"  method="post" action="1a.php">
<?php
//...
while (($file = readdir($cur_dir)) !== false)
{
?>
  <?php
  if ( $file != "." && $file != ".." && is_dir($file) )
  {
    $i_count = $i_count + 1;
    ?>
    <div id="dir_del_<?php echo $i_count; ?>">
      <input type="image"
             src="images/delete.gif"
             name="al_del[]"
             id="al_dell_<?php echo $i_count; ?>"
             value="delete <?php echo $file; ?>"/>
      <?php echo $file; ?>
    </div>
    <?php
  }
}
?>
</form>
<div id="dir_del"></div>

Ve içeride 1a.php, erişim `dizisi kullanarak al_dell:

if ( isset($_POST['al_del']) && is_array($_POST['al_del']) )
{
  foreach ( $_POST['al_del'] as $dir )
  {
    rmdir($dir_path.'/'.$dir);
    echo 'album deleted';
  }
}

Tutarlı bir girinti ile bir kod yazmak size hata nokta ve hızlı bir şekilde bunu düzeltmek yardımcı olacaktır. Alışkanlık haline yapmak ;)

Ayrıca, sayfanızda hatayı görmek için kundakçı kullanın. JQuery ve jQuery form yüklü olduğundan emin olun, ve biçim, normal formu gönderin kullanarak değil, jQuery form eklentileri ile teslim ediliyor. jQuery form aracılığıyla teslim oluşturmak sayfayı yeniden yükleme veya 1a.php neden olmaz, ve (bunu aktive varsa) istek ve tepki Kundakçı konsol ve ağ sekmesinde belirecektir.

Jquery, işleme sonra sayfa üzerinde çalışan formu durdurmak için komut sonunda bir dönüş false eklemek gerekir:

$('#album_del_form').ajaxForm({
    target:'#dir_del',
    success: function() {
    $('#dir_del').fadeOut(40000);
    };
    return false;
});