Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] problem z $.ajax()
Forum PHP.pl > Forum > XML, AJAX > AJAX
onlyX
Witam!
Piszę panel administracyjny i dodaję różności za pomocą jQuery.
Wypociłem taki JS:
  1. $(document).ready(function(){
  2. var value;
  3. var key;
  4. function tdClick(eventObject){
  5. value = $(this).html();
  6. key = $(this).parent("tr").find("td:first").html();
  7. $(this).html('<form><input type="text" value="'+value+'" /></form>');
  8. var form = $(this).find("form");
  9. form.find('input').blur(inputBlur).focus();
  10. form.submit(formSubmit);
  11. $(this).unbind('dblclick', tdClick);
  12. }
  13. function inputBlur(eventObject){
  14. $(this).parent('td').dblclick(tdClick);
  15. $(this).parent('td').html(value);
  16. }
  17. function formSubmit(eventObject){
  18. $.ajax({
  19. method: "get",
  20. url: "http://localhost/test.php",
  21. data: "key=f",
  22. beforeSend: function(){alert("polecialo");},
  23. complete: function(){alert("wrocilo");},
  24. success: function(html){
  25. alert(html);
  26. },
  27. error: function(XMLHttpRequest, textStatus, errorThrown){
  28. alert(XMLHttpRequest);
  29. }
  30. });
  31. }
  32. $('#config td.val').dblclick(tdClick);
  33. });


i testowy php, dla sprawdzenia poprawności:
  1. <?php
  2. if(isset($_GET['key'])){
  3.    echo $_GET['key'];
  4. }else{
  5.    echo 'nothing';
  6. }
  7. ?>

Problem polega na tym, że JS nie dostaje żadnych danych z PHP, nie wykonuje się funkcja w polu success, natomiast beforeSend error i complete owszem.
Ścieżka w skrypcie prowadzi do właściwego pliku.
Z góry dzięki za pomoc.
bełdzio
spr czy zarowno domena strony jak i skryptu do ktorego sie odwolujesz sa takie same - zwroc uwage czy oba (nie) posiadaja przedrostek www
onlyX
odwołanie do pliku z formularzem: http://localhost/collector/admin (korzystam z ModRewrite)
plik php: http://localhost/test.php

Wcześniej miałem obie ścieżki takie same i w PHP sprawdzałem czy zmienna istnieje w $_GET, ale to nie działało, więc dla testów wydzieliłem kod.
GrayHat
Cytat(onlyX @ 28.02.2009, 19:32:50 ) *
...
$.ajax({
method: "get",
url: "http://localhost/test.php",
...


W żądaniach ajaxa nie używamy ścieżek bezwzględnych. spróbuj "/test.php"

Pozdrawiam
batman
Nie method: "get", a type: "GET".
onlyX
batman: wcześniej było type, z takim samym skutkiem
GrayHat: masz rację, tak więc jeśli document.URL=http://localhost/collector/admin
to jak odnieść się do niego samego ścieżką względną?
  1. "."
  2. "/"
batman
Cytat(onlyX @ 28.02.2009, 21:46:33 ) *
batman: wcześniej było type, z takim samym skutkiem

I typu musi zostać, ponieważ nie ma czegoś takiego jak method w tym przypadku.
GrayHat
Cytat(onlyX @ 28.02.2009, 21:46:33 ) *
batman: wcześniej było type, z takim samym skutkiem
GrayHat: masz rację, tak więc jeśli document.URL=http://localhost/collector/admin
to jak odnieść się do niego samego ścieżką względną?
  1. "."
  2. "/"


W tym wypadku bedzie to: "/collector/admin"
onlyX
Wtedy nie będzie przypadkiem http://localhost/collector/admin/collector/admin ?
W dalszym ciągu dane nie docierają do tego samego pliku php. Gdyby docierały w odpowiedzi dostałbym jakiekolwiek dane.
GrayHat
Nie będzie tak jak mówisz gdyż / (slash) na początku odwołuje się do root`a czyli domeny tongue.gif
onlyX
Kurza twarz, w dalszym ciągu dostaję bład:
  1. function formSubmit(eventObject){
  2. $.ajax({
  3. type: "get",
  4. url: "/collector/admin",
  5. data: "key="+key+"&value="+value,
  6. beforeSend: function(){alert("polecialo");},
  7. complete: function(){alert("wrocilo");},
  8. success: function(html){
  9. alert(html);
  10. },
  11. error: function(XMLHttpRequest, textStatus, errorThrown){
  12. alert(XMLHttpRequest);
  13. }
  14. });
  15. }

PHP:
  1. <?php
  2. if(isset($_GET['key']) && isset($_GET['value'])){
  3.    echo 'dupa';
  4.    //echo $config->setOne($_GET['key'], $_GET['value']);
  5. }else{
  6. //inne echo '...';
  7. }
  8. ?>

A błąd jak zwykle jest błahy, zawsze tak jest. :/
GrayHat
type: "GET" (wielkimi)
onlyX
To nie ma sensu. Ktoś wie, jak zdebugować funkcję error, albo cały proces wysyłania? Żeby dało się prześledzić to krok po kroku.
dr_bonzo
Firefox + Firebug, zakladka Net, typ "XHR" - i ci pokaze jakie ajaxowe requesty robisz i co dostajesz spowrotem.
onlyX
Żeby było zabawniej, jak użyję fukcji $.get(), to zwraca mi poprawne dane:
  1. function formSubmit(eventObject){
  2. alert($.get("/collector/admin/", { key: "key", value: "value" },
  3. function(data){
  4. alert(data);
  5. }
  6. ));
  7. }

I firebug to pokazuje, ale dla przykładu z $ajax(), który w dalszym ciągu nie działa, już nie chce.
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.