Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jquery i brak danych w funcji get
Forum PHP.pl > Forum > XML, AJAX > AJAX
muwie
Witam.
Mam dwa pliki html i php. Oto i one:
  1. <?php
  2. require 'class.server.php';
  3. $t=$_POST['komentarz'];
  4.  
  5. echo Server::odwroc($t);
  6.  
  7. ?>

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  5. <script type="text/javascript">
  6.  
  7.  
  8.  
  9. $(function() {
  10.  
  11.  
  12. $(".button").click(function() {
  13. // validate and process form
  14. // first hide any error messages
  15.  
  16.  
  17. var name = $("input#name").val();
  18.  
  19.  
  20.  
  21. var dataString = name;
  22. //alert (dataString);return false;
  23.  
  24. $.ajax({
  25. type: "POST",
  26. url: "server.php",
  27. data: dataString,
  28. success: function() {
  29. $.get("server.php", function(data){
  30. alert("Data Loaded: " + data);
  31. });
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. }
  39. });
  40. return false;
  41. });
  42. });
  43.  
  44. </script>
  45. </head>
  46. <body>
  47. <form method="post" action="" id="formularz">
  48.  
  49. <input type="text" name="name" id="name" size="30" value="" class="text-input" /><br />
  50.  
  51. <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
  52. <br/>
  53. <input type="text" name="phone" id="phone" size="30" value="" class="text-input" />
  54.  
  55.  
  56. </form>
  57. <div id="message">
  58. </div>
  59. </body>
  60. </html>
.
I problem mój polega na tym, że funkcja get przekazuje mi pusty obiekt. Jeśli w skrypcie php podstawie pod zmienną łańcuch znaków to mi poprawnie wyświetla. Mi się wydaje, że błąd jest w tym, że skrypt JS nie czeka na wykonanie skryptu PHP i pobiera dane, gdy tablica POST jest jeszcze pusta. W jaki sposób mogę to naprawić?
melkorm
Kod
data : {
komentarz : 'treść komentarza, lub zmienna, zapewne dataString'
}
muwie
a w jaki sposób użyć tej funkcji data?
melkorm
Data przyjmuje jako parametr obiekt JSON, gdzie kluczem (w tym przypadku komentarz) jest późniejszy klucz w metodzie zapytania (tutaj POST), a wartość to po prostu wartość.

czyli:
Kod
$.ajax({
      type: "POST",
      url: "server.php",
      data:{
komentarz' : dataString,
example : 'example'
},
      success: function() {
       $.get("server.php", function(data){
alert("Data Loaded: " + data);
});

W PHP masz:
  1. var_dump($_POST);
  2. // array('komentarz' => 'zawartość dataString', 'example' => 'example');


Ogólnie poczytaj w dokumentacji jQuery o obiekcie AJAX, w dodatku FireBug do FireFox'a i możesz przeglądać zwracaną treść przez AJAX.


Ogólnie to masz błąd, wiesz co robi $.ajax, a co robi $.get ? Odpowiedź: To samo smile.gif
$.get jest tylko nakładką na obiekt ajax by uprościć zapytanie. Metoda success jest odpalane gdy żądanie ajax jest zakończone pomyślnie i funkcja ta przyjmuje parametr data, który jest zawartością zwrotną żądania.
Dla tego w success gdy używasz $.get wysyłasz ponownie zapytanie do serwera metodą GET dla tego $_POST jest puste.

Uproszczając :
Kod
$.ajax({
type: "POST",
url: "server.php",
data:{
komentarz' : dataString,
example : 'example'
},
success: function( response ) {
alert(response);
});
muwie
Chyba coś źle robię.
  1. <!--
  2. To change this template, choose Tools | Templates
  3. and open the template in the editor.
  4. -->
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  9. <script type="text/javascript">
  10.  
  11.  
  12.  
  13. $(function() {
  14.  
  15.  
  16. $(".button").click(function() {
  17. // validate and process form
  18. // first hide any error messages
  19.  
  20.  
  21. var name = $("input#name").val();
  22.  
  23.  
  24.  
  25. var dataString = name;
  26. //alert (dataString);return false;
  27.  
  28. $.ajax({
  29. type: "POST",
  30. url: "server.php",
  31. data:{
  32. 'name' : dataString
  33. },
  34. success: function(response ) {
  35. $('#message').html(response);
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. }
  44. });
  45. return false;
  46. });
  47. });
  48.  
  49. </script>
  50. </head>
  51. <body>
  52. <form method="post" action="" id="formularz">
  53.  
  54. <input type="text" name="name" id="name" size="30" value="" class="text-input" /><br />
  55.  
  56. <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
  57. <br/>
  58.  
  59.  
  60.  
  61. </form>
  62. <div id="message">
  63. </div>
  64. </body>
  65. </html>

  1. <?php
  2. require 'class.server.php';
  3. $t=$_GET['name'];
  4.  
  5. $data=Server::odwroc($t);
  6. echo $data;
  7.  
  8. ?>
  9.  

a w konsoli w firefoxie dostaje
  1. <br />
  2. <font size='1'><table dir='ltr' border='1' cellspacing='0' cellpadding='1'>
  3. <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: name in C:\xampp\htdocs\3\server.php on line <i>3</i></th></tr>
  4. <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
  5. <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
  6. <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0009</td><td bgcolor='#eeeeec' align='right'>325336</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\xampp\htdocs\3\server.php' bgcolor='#eeeeec'>..\server.php<b>:</b>0</td></tr>
  7. </table></font>

Czyli jestem na początku. Macie jakieś pomysły jak to zrobić? Na sto procent wysyłanie jest dobre bo przechodzi do bloku succes. I jeśli na sztywno wpisze stringa w server.php to działa. Czyli wszystko się rozchodzi o wyświetlanie
Ale gapa ze mnie. Już wszystko oki. W html miałem POST a php brałem z tablicy GET
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.