Forum » Programiranje » AJAX neznana težava
AJAX neznana težava
luksorzi ::
Imam 3 datoteke:
index.php
login.js
login.php
Bi mi kdo znal povedat, kaj počnem narobe? Tole z ajax počnem prvič ...
index.php
<html> <head> <meta charset="utf-8"> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="login.js"></script> </head> <body> <form id="login_form"> <input type="text" id="login_name"><br> <input type="password" id="login_pass"><br> <input type="submit" value="Prijava"> </form> <div id="response"></div> </body> </html>
login.js
$(document).ready(function(){ $("#login_form").submit(function(){ var user = $("#login_name").val(); var pass = $("#login_pass").val(); var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("response").innerHTML=xmlhttp.responseText; } } xmlhttp.open("POST","login.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("user="user"&pass="pass"); }); });
login.php
<?php $user=$_POST['user']; $pass=$_POST['pass']; echo $user; ?>
Bi mi kdo znal povedat, kaj počnem narobe? Tole z ajax počnem prvič ...
carota ::
Imaš jQuery, zakaj se matraš z XMLHttpRequest-i?
http://api.jquery.com/jQuery.post/
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
http://api.jquery.com/jQuery.post/
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
luksorzi ::
login.js sem spremenil tako:
V login.php pa sem dal samo
Ko submitam formo se ne zgodi nič, v konzolo pa dobim tole:
$(document).ready(function(){ $("#login_form").submit(function(){ var user = $("#login_name").val(); var pass = $("#login_pass").val(); $.ajax({ type:'POST', url:'login.php', data:'sended_data', success:function(response){ alert(response); } }); }); });
V login.php pa sem dal samo
echo "krneki";
Ko submitam formo se ne zgodi nič, v konzolo pa dobim tole:
carota ::
Brez Firebuga se boš tudi namatral ... Še to si namesti v Firefox: http://getfirebug.com/
Ko boš imel nameščenega, ga odpreš z F12 in potem v zavihku "Net" vidiš requeste.
Probaj poslat podatke tako (iz istega linka, kot sme ga zgoraj dal za $.ajax):
$.post("test.php", { "func": "getNameAndTime" },
function(data){
console.log(data.name); // John
console.log(data.time); // 2pm
}, "json");
Ko boš imel nameščenega, ga odpreš z F12 in potem v zavihku "Net" vidiš requeste.
Probaj poslat podatke tako (iz istega linka, kot sme ga zgoraj dal za $.ajax):
$.post("test.php", { "func": "getNameAndTime" },
function(data){
console.log(data.name); // John
console.log(data.time); // 2pm
}, "json");
luksorzi ::
Requesti so samo trije GET ... /sdev/ (pač vsebina index.php), jquery.js in pa login.js
bom pskusil še z $.post
bom pskusil še z $.post
carota ::
Pa se tvoja funkcija sploh pokliče? Ali uporabiš $.ajax() ali $.post() ni bistvene razlike saj je eden le shortcut za drugega. Poglej kako so vrednosti zapakirane.
Osebno raje dam na gumb onclick atribut, kjer eksplicitno definiram funkcijo, ki naj se pokliče, in uporabim type="button". Funkcijo imam posebej definirano. Tako se lažje znajdem v kodi in se ne sprašujem, ali se bo ob kliku na Submit izvedela le moja funkcija ali bo le submitalo ali oboje in katero prej.
Osebno raje dam na gumb onclick atribut, kjer eksplicitno definiram funkcijo, ki naj se pokliče, in uporabim type="button". Funkcijo imam posebej definirano. Tako se lažje znajdem v kodi in se ne sprašujem, ali se bo ob kliku na Submit izvedela le moja funkcija ali bo le submitalo ali oboje in katero prej.
luksorzi ::
LoL, na koncu sem dal še en random alert in zdaj deluje!
Ampak, če rezultat, ki ga vrne login.php izpišem v div response, se ta po kliku na ok izbriše ...
Ampak, če rezultat, ki ga vrne login.php izpišem v div response, se ta po kliku na ok izbriše ...
Zgodovina sprememb…
- spremenil: luksorzi ()
radiokills ::
Problem je ker se ti hkrati z javascriptom hkrati tudi submita obrazec.
Poskusi naslednje:
Poskusi naslednje:
$(document).ready(function(){ $("#login_form").submit(function(event){ //preprecimo, da bi se poslala forma event.preventDefault() var user = $("#login_name").val(); var pass = $("#login_pass").val(); $.ajax({ type:'POST', url:'login.php', data:'sended_data', success:function(response){ alert(response); } }); }); });
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | jquery ajax problemOddelek: Izdelava spletišč | 1485 (1107) | miko22 |
» | curl + sslOddelek: Programiranje | 793 (611) | MrStein |
» | JqueryOddelek: Izdelava spletišč | 1813 (1537) | mk818764 |
» | jquery in div-i (strani: 1 2 )Oddelek: Izdelava spletišč | 11316 (10054) | lisjak |
» | Php varen loginOddelek: Programiranje | 3906 (3406) | Volk| |