Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AJAX i PHP - problem z metodą POST
Forum PHP.pl > Forum > XML, AJAX
mleko64
Witam!
Mam problem z przesłaniem za pomocą AJAX'a danych metodą POST (z GET'em nie mam problemu).
Mam zainstalowanego FireBug'a, który zgłasza mi, że dane zostały wysłane prawidłowo, ale niestety tablica POST w PHP jest pusta.
Spróbowałem wyświetlić dane za pomocą zmiennej $HTTP_RAW_POST_DATA i dane faktycznie znajdują się tam.
Tutaj zamieszczam kod JS:
  1. function getOptions(scheme) {
  2.  
  3. var url = "options.php";
  4.  
  5. var params = "wybor=" + scheme;
  6.  
  7. if (XMLHttpRequestObject) {
  8.  
  9. XMLHttpRequestObject.open("POST", url);
  10.  
  11. XMLHttpRequestObject.setRequestHeader('Content-Type' , 'application/x-www-form-urlencode');
  12.  
  13. XMLHttpRequestObject.onreadystatechange = function() {
  14.  
  15. if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
  16.  
  17. var xmlDocument = XMLHttpRequestObject.responseXML;
  18. options = xmlDocument.getElementsByTagName('option');
  19. listOptions();
  20. }
  21. }
  22.  
  23. XMLHttpRequestObject.send(params);
  24. }
  25. }


Nie wiem czy to zależy od konfiguracji serwera PHP (pracuję na localhost).
Bardzo proszę o pomoc, ponieważ męczę się już z tym jakiś czas, a w google nic nie znalazłem co by rozwiązało mój problem.
Dziękuję i pozdrawiam,
mleko64
celbarowicz
zaczynam pracę z ajaxem to działa.
formularz.php
  1. <html>
  2. <head>
  3. <script type="text/javascript" src="funkcje.js"></script>
  4.  
  5. </head>
  6. <body>
  7. <?php
  8. if(!isset($_SESSION['edek'])){$_SESSION['edek']='poczatek';}else{}
  9. echo $_SESSION['edek'];
  10. ?>
  11. <br>
  12. <form method="post" action="SaveCustomer.php" onsubmit="sendRequest(); return false" >
  13.  
  14. Nazwisko:<input type="text" name="nazwisko" value="" >
  15. <input type="submit" value="zapisz">
  16. </form>
  17. </body>
  18. </html>


funkcje.js
function getNewHttpObject(){
if (typeof XMLHttpRequest != "undefined" ){return new XMLHttpRequest();}
else if (window.ActiveXObject) {
var aVersions=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp","Microsoft.XMLHttp"];
for (var i=0; i < aVersions.length; i++){
try{
var oXmlHttp=new ActiveXObject(aVersions[i]);
return oXmlHttp;
} catch (oError) { }
}
}
throw new Error("Nie można utworzyć obiektu XMLHttp.");
}



function getRequestBody(oForm){
var aParams=new Array();
for (var i=0; i <oForm.elements.length; i++){
var sParam=encodeURIComponent(oForm.elements[i].name);
sParam +="=";
sParam +=encodeURIComponent(oForm.elements[i].value);
aParams.push( sParam);
}
return aParams.join("&");
}



function sendRequest() {
var oForm=document.forms[0];
var sBody=getRequestBody(oForm);

var oXmlHttp=getNewHttpObject();
oXmlHttp.open("post",oForm.action,true);
oXmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

oXmlHttp.onreadystatechange = function() {if (oXmlHttp.readyState == 4) {
if (oXmlHttp.status == 200) {
saveResult(oXmlHttp.responseText);
} else {
saveResult("Wystąpił błąd" + oXmlHttp.statusText);
}
}
}

oXmlHttp.send(sBody);

}

SaaveCustomer.php
  1. <?php
  2. header("Content-Type: text/plain");
  3. $a=$_POST['nazwisko'];
  4. $_SESSION['edek']=$_POST['nazwisko'];
  5. $link=mysql_connect('localhost','root','');
  6. $charset = mysql_client_encoding($link);
  7. if ( $charset != 'utf8' ) {
  8. mysql_set_charset('utf8',$link);
  9. }
  10.  
  11. $sql="CREATE DATABASE IF NOT EXISTS $a ";
  12. mysql_query($sql) or die(mysql_error());
  13.  
  14.  
  15. ?>

jak uruchomisz skrypt ,wpiszesz coś do pola text i zatwierdzisz to zostanie utworzona baza( w celach testowych), po odświeżeniu strony wypisana zostaje zmienna sesyjna-co potwierdza, że POST działa.

croc
Masz literówkę tutaj:
  1. XMLHttpRequestObject.setRequestHeader('Content-Type' , 'application/x-www-form-urlencode');


Powinno być:
  1. XMLHttpRequestObject.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded');
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.