Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mintAjax i problem z inputem
Forum PHP.pl > Forum > XML, AJAX > AJAX
testowexxx
Witam,
mam pewien problem, który polega na tym, iż w przeglądarce Firefox nie
działa dynamiczne pole input. Przedstawienie problemu:

[JAVASCRIPT] pobierz, plaintext
  1. Funkcja JS:
  2.  
  3. function chooseCategory(cid, appURL){
  4. var req = mint.Request().Set(config);
  5. req.AddParam("cid", cid);
  6. req.Send(appURL+"xhr/getSubcategory.html", "cid");
  7. }
[JAVASCRIPT] pobierz, plaintext


Służy do pobierania podkategorii i wyświetla Selecty w formie:

[select - kategoria] -> [select - podkategoria] -> [select - wybierz kolejną podkategorie]

(selecty pojawiają się raz - do najgłębszej subkategorii / kategorii, później widoczny jest tylko link do zmiany wybranej kategorii)

Przy czym każde kolejne pole select jest wyświetlane po wybraniu kategorii powyższej i oczywiście jeżeli ta kategoria ma podkategorię. W moim div-ie "categoryPath" poprzez firebuga widze:

  1. <div id="categoryPath">
  2. <a onclick="java script:chooseCategory(0, 'http://127.1/www/xxx/skrypty/gsp/admin/')" href="stock/productAdd.html#">Dla dzieci</a> <span>></span>
  3. <a onclick="java script:chooseCategory(14, 'http://127.1/www/xxx/skrypty/gsp/admin/')" href="stock/productAdd.html#">Zabawki</a> <span>></span>
  4. <a onclick="java script:chooseCategory(27, 'http://127.1/www/xxx/skrypty/gsp/admin/')" href="stock/productAdd.html#">Do lat 5</a> <span>></span>
  5. <a onclick="java script:chooseCategory(29, 'http://127.1/www/xxx/skrypty/gsp/admin/')" href="stock/productAdd.html#">Gry planszowe</a>
  6.  
  7. <input type="hidden" value="31" id="cid" name="cid">
  8. </div>


Więc z odpowiedzi response funkcji chooseCategory(...) opisanej powyżej mamy wrzuconą przez Ajaxa zawartość wraz z inputem "cid".

Niby wszystko ok, ale teraz... wywołuję funkcję JS przez kliknięcie w button:

[JAVASCRIPT] pobierz, plaintext
  1. function checkProductForm(appURL) {
  2.  
  3. var req = mint.Request().Set(config);
  4.  
  5. // Check form
  6. req.OnSuccess = function(){
  7. if (this.responseText == "") {
  8. document.forms['productForm'].submit();
  9. } else {
  10. $("errors").innerHTML = this.responseText;
  11. document.getElementById('messagesContainer').style.display='block';
  12. scroll(0,0);
  13. }
  14. }
  15.  
  16. req.OnAbort = function() {
  17. alert("Serwer ma problemy z odebraniem zapytania. Spróbuj ponownie późnej.");
  18. }
  19.  
  20. req.SendForm('productForm', appURL+"xhr/checkProductForm.html");
  21.  
  22. }
[JAVASCRIPT] pobierz, plaintext


No i działanie ma być takie, że gdy funkcja odbierze jakieś błędy z adresu appURL+"xhr/checkProductForm.html" to wrzuca je w div'a "errors" i wyświetla go. Wszysto ok, poza tym, że wcześniej wygenerowany również przez autmatyczny innerHTML input "cid" jakby w ogóle nie istniał. Poza ewentualnymi błędami response zawiera:

Notice: Undefined index: cid in
C:\wamp\www\www\xxx\skrypty\gsp\application\controllers\XhrController.php on line 28

Czyli tak jakby w ogóle nie był widoczny input "cid" z formularza. Kod php z linii błędu to:

  1. $products->checkProductFormXhr($_POST['pname'], $_POST['price'], $_POST['vat'], $_POST['description'], $_POST['amountId'], $_POST['stock'], $_POST['stockAmountOk'], $_POST['cid'], $_POST['promotionType'], $_POST['promotionValue']);



Co ciekawe, problem ten nie występuje w IE.
Proszę o pomoc.
mortus
Niestety Firefox podczas korzystania z AJAX'a ma problemy z aktualizacją drzewa DOM. Zainstaluj Firebuga (jeśli nie masz) i prześledź drzewo DOM przed i po wyborze kategorii. Zakładka DOM i kolejno document, forms, elements. Niestety nie wiem, czy mintAJAX posiada jakąś metodę aktualizacji drzewa DOM. A wcześniej sprawdź, czy aby na pewno wygenerowany przez AJAX'a input znajduje się pomiędzy znacznikami <form> i </form>.
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.