Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP JavaScript Ajax problem z wywolaniem JS po Ajaxie
Forum PHP.pl > Forum > PHP
adamli
Witam
Mam probelm z wywolaniem funkcji JavaScript po zapytaniu Ajaxowym...
Musze przerobic stara wersje formularza na wersje ajaxowa...
Po submit formularz wywoluje sie sam z tym ze wtedy sprawdza poprawnosc
danych zapisanych w formularzu i jezeli jest blad wyswietla popup.
Niestety po zapytaniu Ajaxowym funkcje JavaScript nie dzialaja sad.gif
Podam latwy przyklad dla zrozumienia problemu:
Kod
<html>
<head>
</head>
<body>

<script type="text/javascript">

function makeStandardPOSTRequest(url, parameters) {
   http_request = false;
   if (window.XMLHttpRequest) {
      http_request = new XMLHttpRequest();
      if (http_request.overrideMimeType) {
         http_request.overrideMimeType('text/html');
      }
   } else if (window.ActiveXObject) {
      try {
         http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e) {}
      }
   }
   if (!http_request) {
      alert('Cannot create XMLHTTP instance');
      return false;
   }
   http_request.onreadystatechange = alertContents;
   http_request.open('POST', url, true);
   http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   http_request.setRequestHeader("Content-length", parameters.length);
   http_request.setRequestHeader("Connection", "close");
   http_request.send(parameters);
}

function alertContents() {
   if (http_request.readyState == 4) {
      if (http_request.status == 200) {
         result = http_request.responseText;
         document.getElementById('myDiv').innerHTML = result;  
      } else {
         alert('There was a problem with the request.');
      }
   }
}

function submitForm(){
     paramsString = "abc=1";
     makeStandardPOSTRequest('test.php',paramsString);
}


function checkResponse(value){
     if (value=="abc")
         alert("wartosc jest OK");
     else
         alert("wartosc nie jest OK");
}

</script>


<?php

echo "<div id =myDiv>";
echo '<script type="text/javascript">alert("JavaScriptTestText");</script>';

if (isset($_POST['abc'])) {
     echo '<script type="text/javascript">checkResponse('.$_POST['abc'].');</script>';
}

echo "<form name=\"mydirectselectionform\" id=\"mydirectselectionform\" method=\"POST\">";
echo "<a href='javascript:submitForm()'>Submit</a>";

echo "</form>";
echo "</div>";
?>

</body>
</html>


Chodzi o to ze funkcja alert("JavaScriptTestText") jest wywolywana tylko raz (przy wczytaniu strony)
Niestety nie jest juz wywolywana po Submi'cie formularza sad.gif dlatego tez nie moge wywolac mojej
funcji JavaScript - checkResponse() ktora sprawdza poprawnosc danych i ewentualnie wyswietla popup.
Podany przyklad jest tylko przykladem i chodzi tylko o zrozumienie problemu wiec za uwagi ze moj
formularz nie ma zadnego input i tym podobne z gory dziekuje;)
Czy ktos potrafi mi pomoc?

Dziekuje
Adam
zegarek84
Kod
document.getElementById('myDiv').innerHTML = result;

gdzie:
Kod
echo "<div id =myDiv>";
echo '<script type="text/javascript">alert("JavaScriptTestText");</script>';
...
echo "<a href='javascript:submitForm()'>Submit</a>";

echo "</form>";
echo "</div>";


po pierwsze skrypty w "body" "aktywują" się podczas wczytywania dokumentu i nie będą działały - musisz uruchomić zewnętrzną funkcję...
po drugie "<a href='java script:submitForm()'>Submit</a>" - "wycinasz" to i podmieniasz - samo wywołanie zewnetrznej funkcji która już była wczytana przez 'java script:submitForm()' raczej powinno działać o ile wczytasz to ponownie - jednak raczej bezpieczniej jest tą funkcjonalność "podpiąć" przez DOM (np. jakis_element.onclik=jakaś_funkcja) po podmienieniu tej treści do danego elementu tej treści

pozatym dlaczego to nie jest w dziale JavaScript bądź AJAX??...
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.