Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Z JS do PHP przez AJAX
#1
Witam, stworzyłem sobie taki oto skrypt.

HTML

Kod PHP:
<html>
<
head>
<
meta charset="utf-8" />
<
title>xxx</title>


<
script type="text/javascript"><!--
$(
document).ready(function() {
  $(
'#crs').submit(function() {

    var 
nm = $('#crs #nm').val();

    $.
ajax({
      
type'post',
      
url'script.php',
      
datanm,
      
beforeSend: function() {

        $(
'#resp').html('Loading...');
      },
      
timeout10000,        
      
error: function(xhrstatuserror) { alert('Error: 'xhr.status' - 'error); },
      
success: function(response) { $('#resp').html(response); }
    });

    return 
false;      
  });
});
--></
script>

</
head>
<
body>
<
div id="resp"></div>

<
form action="script.php" method="post" id="crs">

 
Name: <input type="text" name="nm" id="nm" /><br />

 <
input type="submit" value="submit" />
</
form>
</
body>
</
html


PHP
Kod PHP:
<?php

if(isset($_POST['nm']) ) 
{

 
$nm $_POST['nm'];

 
$rehtml '<h4>Hy '$nm'</h4>';

}
else 
$rehtml 'Invalid data';

echo 
$rehtml;        // output (return) the response


?>


Problem w tym, że zamiast
Cytat:<input type="text" name="nm" id="nm" /><br />
muszę mieć
Cytat:<div id="nm">wartosc_wygenerowana_przez_js</div>


Pytanie: Czy przy pomocy AJAX'a uda mi się odczytać wartość z DIV'a a następnie przesłać ją do PHP ??
Odpowiedz
#2
Kod:
$('#nm').html();
Tym możesz pobrać zawartość diva

Kod:
<script type="text/javascript"><!--
$(document).ready(function() {
  $('#crs').submit(function() {

    var nm = $('#nm').html();

    $.ajax({
      type: 'post',
      url: 'script.php',
      data: nm,
      beforeSend: function() {

        $('#resp').html('Loading...');
      },
      timeout: 10000,        
      error: function(xhr, status, error) { alert('Error: '+ xhr.status+ ' - '+ error); },
      success: function(response) { $('#resp').html(response); }
    });

    return false;      
  });
});
Odpowiedz
#3
ok, a jak teraz przesłać tę pobraną wartość przez ajax'a do php ?? Smile
Odpowiedz
#4
(20-01-2012, 02:46)sooper napisał(a): ok, a jak teraz przesłać tę pobraną wartość przez ajax'a do php ?? Smile
Przecież masz przesyłanie AJAXem w powyższym przykładzie...
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Odpowiedz
#5
Pedro84 zgadza się, jednak zamiast wartości z diva skrypt nic nie przesyła i pojawia się 'Invalid data' :|

Powinno być " Hy (wartość z div)"

Siedzę nad tym cały dzień i nie mogę dojść co jest nie tak ehhh...
Odpowiedz
#6
Nie zauważyłem jednej ważnej rzeczy:
Kod PHP:
<body>
<
div id="resp"></div>

<
form action="script.php" method="post" id="">

 
Name: <input type="text" name="nm" id="nm" /><br />

 <
input type="submit" value="submit" />
</
form>
</
body>
</
html

Jeśli wysyłasz zawartość przez ajax to nie możesz tak definiować <from> bo formularz zostaje wysłany normalnie. Daj np.
Kod PHP:
<form id="crs" onsubmit "return false;"
Daj znać czy coś to pomogło.
Odpowiedz
#7
Ogólnie dzięki za pomoc Smile

Może napiszę do czego dążę.

Załóżmy że mam formularz logowania, taki jak jest na tym forum.
Składa się on z 2 inputów ( Nazwa oraz hasło użytkownika)

Kod PHP:
<input type="text" name="nazwa" id="nazwa" />
<
input type="text" name="haslo" id="haslo"  /> 

Chciałbym do tego formularza dodać diva, gdzie jego wartość będzie generowana przez JS (generowanie mam już zrobione)

Kod PHP:
<div name="test" id="test>{WARTOŚĆ Z JS}</div> 

i na końcu wysłać wszystko submitem

Kod PHP:
<input type="submit" value="submit" /> 

Po stronie php wartości z inputów odczytamy za pomocą $_POST[]

Jak odczytać wartość DIVA ??

Odpowiedz
#8
Ale co ma być w tym DIV umieszczone? Coś niewidocznego dla użytkownika? Jeśli tak to robisz to za pomocą
Kod PHP:
<input type="hidden" name="nazwa" value="nm" /> 
I wysyłasz wszystko poprzez:
Kod PHP:
$.ajax({
            
type"POST",
            
url"script.php",
            
data: {
                
nm nm.val(),
                
nazwa nazwa.val(),
                                
hasło hasło.val()
        }

                      
success: function(data) {}
}) 
Musi to być koniecznie w ajax zrobione?
Odpowiedz
#9
W chwili obecnej mam ukrytego input'a, ale istnieją sposoby aby takiego input'a zrobić widocznym i zmienić wartość.

Chodzi mi o coś takiego:

[Obrazek: 123456u.png]
Wartość 12335... jest wygenerowana przez JS. i znajduje się w div'ie

Oczywiście nie musi być w AJAX, ale nie wiem czy inaczej się da to przesłać :|

//poprawione zdjęcie


Załączone pliki
.png   123456.png (Rozmiar: 9.49 KB / Pobrań: 0)
Odpowiedz
#10
popraw zdjęcie bo nie działa.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Dodawanie postów przez użytkownika zymeg 1 3,016 11-01-2015, 01:35
Ostatni post: Radian
  Projekt karcianej gry multiplayer przez przeglądarkę gdp 0 1,838 19-10-2014, 05:34
Ostatni post: gdp
Sad AJAX - linki ze znacznika <a> johnyedwardo 0 1,917 31-03-2012, 00:01
Ostatni post: johnyedwardo
Cool [ajax+js] Problem ze skryptem na IE marcin006 0 1,581 23-02-2012, 00:41
Ostatni post: marcin006
  Prototype Ajax.Updater marekkkkk 4 4,173 06-01-2012, 03:53
Ostatni post: marekkkkk

Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości
Sponsorzy i przyjaciele
SeoHost.pl