Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> advAJAX i przesyłanie plików
Edric
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 23.04.2007

Ostrzeżenie: (0%)
-----


Witam.
Staram się w swoim projekcie zastosować przesyłanie plików na serwer bez przeładowywania strony. Chciałem do tego wykorzystać bibliotekę advAJAX. Kod na którym eksperymentuje, wygląda następująco:

formularz.html:
  1. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
  2. <script type="text/javascript" src="advajax.js"></script>
  3.  
  4. <script type="text/javascript">
  5.  
  6. window.onload = przeslij;
  7.  
  8. function przeslij()
  9. {
  10. advAJAX.assign(document.getElementById("form_1"), {
  11. onSuccess : function(obj) {
  12. document.getElementById("info").innerHTML = obj.responseText;
  13. }
  14. });
  15. }
  16. </head>
  17.  
  18.  
  19. <form method="post" enctype="multipart/form-data" action="plik.php" id="form_1">
  20. Plik:<br />
  21. <input type="file" name="nazwa" /><br />
  22. <input type="submit" value="OK" />
  23. </form>
  24.  
  25. <span id="info" style="display: block"></span>
  26.  
  27. </body>
  28. </html>


plik.php:
  1. <?
  2. var_dump($_FILES);
  3. ?>



Wywołanie window.onload = przeslij; sprawia, że obsługę formularza przejmuje advAJAX. Gdy wywołanie to jest aktywne, to jako odpowiedź otrzymuję: "array(0) { }",
czyli php nie stwierdziło żadnych plików do przesłania. Gdy wywołanie window.onload = przeslij; usuwam, formularz obsługiwany jest standardowo i po otwarciu nowej strony mam:

array(1) { ["username"]=> array(5) { ["name"]=> string(15) "Clipboard01.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(74) "C:\Documents and Settings\Edric\Ustawienia lokalne\Temp\php218.tmp" ["error"]=> int(0) ["size"]=> int(250548) }

czyli formularz działa prawidłowo. Wygląda na to, że advAJAX nie potrafi obsługiwać przesyłania plików.. albo ja robie coś źle. I tu pytanie - co zrobić żeby to zadziałało? Dodam jeszcze, że jeśli zmienię typ input na 'text', i sprawdzę zmienną $_POST po przesłaniu za pomocą advAJAX to wszystko działa dobrze.

Może zna ktoś jakiś inny obiekt AJAX, który pomógłby mi to zrealizować?

Próbowałem problem rozwiązać w inny sposób, ale na drodze stanęła mi Opera i jej obsługa inputów dla plików (pytanie na ten temat również znajduje się na forum.

Bardzo proszę o pomoc, bo naprawdę nie wiem jak ten problem rozwiązać.

Niestety nie wiem, jak to wygląda z advAJAX, ale znalazłem coś co prawdopodobnie rozwiązuje ten problem:

http://en.dklab.ru/lib/JsHttpRequest/" title="Zobacz w manualu PHP" target="_manual

Ten post edytował Edric 10.06.2008, 14:58:53
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 19:18