Intrebare functie ajax

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
andras
Mesaje:430

Intrebare functie ajax

Salut,
Vreau sa incep o noua aplicatie si doresc s-o fac in ajax pentru a evita reincarcarile de pagina care sunt deranjante cind sunt multe.
Care ajax e mai rapid? Ajax JQuery sau ajax JS? Eu sint mai obisnuit cu ajax JQuery. Cum e mai bine? Fac o functie ajax pentru fiecare buton?
Pot sa fac o clasa care sa contina o functie ajax si sa-i pasez doar un array cu parametri?
Multumesc.

MarPlo Mesaje:4343
Salut
jQuery si toate framework-urile JavaScript folosesc in codul lor functiile originale JS, doar ca simplifica apelarea prin diferite instructiuni in functiile lor pe care sa nu le mai scrii tu.
Ajax JS e mai rapid fiindca nu mai folosesti o alta functie in plus pentru acea accesare, nici incarcarea unui framework. Oricum, diferenta e de sutimi de secunda dintre un Ajax original JS si jQuery, ceea e nu se cunoaste la utilizator.
Deci, e bine cu ceea ce stii sa faci, cu ce te pricepi mai bine.
Viteza /eficienta unei aplicatii ajax depinde si de scriptul de pe server, care a apelat.

- Personal, folosesc o functie pentru Ajax ca aceasta:

Cod: Selectaţi tot

/* Ajax Function
 Send "data" to "php", using the method added to "via", and pass response to "callback" function
 data - object with data to send, name:value; ex.: {"name1":"val1", "name2":"2"}
 php - address of the php file where data is send
 via - request method, a string: 'post', or 'get'
 callback - function called to proccess the server response
*/
function ajaxSend(data, php, via, callback) {
  var ob_ajax =  (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");	 // XMLHttpRequest object

  //put data from "data" into a string to be send to "php"
  var str_data ='';
  for(var k in data) {
    str_data += k +'='+ data[k].replace(/\?/g, '%3F').replace(/=/g, '%3D').replace(/&/g, '%26').replace(/[ ]+/g, '%20') +'&'
  }
  str_data = str_data.replace(/&$/, '');  //delete ending &

  //send data to php
  ob_ajax.open(via, php, true);
  if(via =='post') ob_ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  ob_ajax.send(str_data);

  //check the state request, if completed, pass the response to callback function
  ob_ajax.onreadystatechange = function() {
    if (ob_ajax.readyState == 4) callback(ob_ajax.responseText);
  }
}

//Example Usage
var form_data = {'name':'Nume', 'pass':'Parola'};
ajaxSend(form_data, 'test.php', 'post', function(resp){
  alert(resp);
});
- E simpla de folosit la diferite apelari Ajax, doar se acceseaza ajaxSend() cu datele pentru parametri. Importanta e functia "callback", care primeste si proceseaza raspunsul de la server. Functia asta se poate face "anonima" (direct la argument) ca in exemplu din cod, sau separat, cu un nume, daca se foloseste aceleasi instructiuni la apelari diferite.

- Poate alt cineva are si o alta metoda de lucru cu Ajax, din care am putea invata.

andras Mesaje:430
MarPlo, am adoptat functia ta si merge super cu ajax! Am renuntat la reincarcarile de pagina si aplicatia incepe sa arate ca o aplicatie profesionista. Dar sint doar la inceput. Multumesc!