Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usunięcie odpowiedniego pliku na serwerze za pomocą jquery
Forum PHP.pl > Forum > XML, AJAX
lukasheek88
Witam wszystkich. Mam pewien problem. Otóż:

Mam plik response.php
  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. <title></title>
  6. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
  7. <script type="text/javascript">
  8. $(document).ready(function(){
  9. $("form#submit").submit(function() {
  10. // Przechwytujemy wartości z formularza i przesyłamy je do pliku zapisz.php
  11. var file = $('input[name=file]');
  12. var del = $('input[name=del]');
  13.  
  14. var data = 'file=' + file.val() + '&del=' + del.val();
  15.  
  16. $.ajax({
  17. type: "POST",
  18. url: "zapisz.php",
  19. data: data,
  20. success: function(data){
  21. //success zwraca data, mozemy sobie łatwo sprawdzić co wpisaliśmy przez print_r
  22. alert(data);
  23.  
  24. }
  25.  
  26. });
  27. return false;
  28. });
  29. });
  30. </script>
  31. </head>
  32.  
  33. <body>
  34. <div class="pasek">
  35.  
  36. <?php
  37. if (file_exists('robocze/'.$_SESSION['temp_folder'])) {
  38. echo "<table>";
  39. foreach (new DirectoryIterator('robocze/'.$_SESSION['temp_folder']) as $i=>$fileInfo) {
  40. If(($fileInfo->getFilename()<>".") AND ($fileInfo->getFilename()<>"..")){
  41.  
  42.  
  43. echo "<tr><td>".$fileInfo->getFilename() . " &nbsp; - &nbsp;(".floor(($fileInfo->getSize()/1024))." KB)</td><td>
  44. <form method='post' action='' id='submit' ><input type='hidden' name='del' value='tak' id='del' />
  45. <input type='hidden' name='file' value='".$fileInfo->getFilename()."' id='file'/>
  46. <input type='submit' value='Usuń' id='submit' /></form></td></tr>
  47. ";
  48.  
  49. }
  50. }
  51. echo "</table>";
  52. }
  53. else
  54. {
  55. echo "Nie załadowano żadnego pliku.";
  56. }
  57.  
  58. ?>
  59. </div>
  60. </body>
  61. </html>


Oraz plik zapisz.php

  1. <?php
  2. // Odbieranie danych metodą post
  3.  
  4. $file = $_POST['file'];
  5.  
  6. $del = htmlspecialchars(trim($_POST['del']));
  7.  
  8. IF((isset($del)) AND ($del=='tak')){
  9. unlink('robocze/'.$_SESSION['temp_folder'].'/'.$file);
  10. }
  11.  
  12.  
  13. ?>

Mój problem polega na tym, że wyświetlając plik response.php, otrzymuję tabelkę z plikami w danym katalogu. Chcę usunąć plik ze środka tej listy, lecz zawsze usuwa się pierwszy plik. Pole name=file jest stałe stąd też wysyłany formularz pobiera wartość pierwszego pliku. Chciałbym móc usunąć dowolny plik z wyświetlanej w pliku response.php listy. Klikając np trzeci plik, usunąć trzeci, a nie pierwszy.

Takie pole wyświetla plik response.php
http://zapodaj.net/c8d61ab86f3b2.jpg.html

Tutaj widzimy listę plików do usunięcia. Klikając na usun by usunac plik 'przyklad.jpg', zamiast tego usunie nam plik pierwszy czyli przyklad - Kopia - Kopia .jpg. Tak samo z kolejnymi plikami. Zawsze będzie chciał nam usunąć pierwszy.
Proszę o pomoc. Mam nadzieję, że tak mocno nie zagmatfałem sprawy.
krowal
Nie przechwytujesz pól z submitowanego formularza tylko pierwsze elementy pasujące do selektora (wyszukiwane w całym dokumencie)
To:
[JAVASCRIPT] pobierz, plaintext
  1. var file = $('input[name=file]');
  2. var del = $('input[name=del]');
[JAVASCRIPT] pobierz, plaintext


Zamień na:
[JAVASCRIPT] pobierz, plaintext
  1. var file = $(this).find('input[name=file]');
  2. var del = $(this).find('input[name=del]');
[JAVASCRIPT] pobierz, plaintext


Edit: jeszcze jedno, nie może być kilku elementów o takim samym ID w dokumencie, wywołanie selektora $('form#submit') zawsze wyciągnie tylko pierwszy element z tym ID. Imo możesz w ogóle zrezygnować z ID formularza i obsługę eventu submit obsłużyć w ten sposób $('form').submit(function(){...}). Będzie to działać z tym co napisałem wyżej.
lukasheek88
Dzięki, działa idealnie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.