Return false la onsubmit cu ajax

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

Return false la onsubmit cu ajax

Salut,
Cum pun return false; ca rezultat al unui ajax? Am un <form onsubmit="return existaanluna('."'".$tabela."'".')"> iar in functia respectiva am pus ajax (simplificat):

Cod: Selectaţi tot

<script>
	success : function(msg) {  // msg este rezultatul verificarii in BD. Daca lungimea msg>0 trebuie return false
		if (msg.length>0) {
			alert(msg);
			return false;
		}
	}
</script>
dar nu functioneaza corect, afiseaza alert dar face si submit, nu ia in considerare retun false. Multumesc.

MarPlo Mesaje:4343
Salut
Return false adaugat la "success" in ajax nu are efect deoarece codul de la "success" se executa cu intarziere, dupa ce e primit si procesat raspunsul de la server. Pana atunci, nu exista "return false", prin urmare javascript continua codul ca si cum nu e nici un "false".
Incearca sa pui "return false" direct in functia ta ajax, dupa "succeess", cam asa:

Cod: Selectaţi tot

function existaanluna(param){
  //codul tau pt ajax..
  success : function(msg){
    alert(msg);
  }
  return false;
}

andras Mesaje:430
Oriunde o pun in alta parte fie imi da eroare si functia ajax nu se executa, fie returneaza tot timpul false si nu face submit. Ma gindesc sa fac un artificiu, sa pun rezultatul (msg) intr-un hidden iar la iesire din functia JS sa ciesc aceasta valoare din hideen.

edit: asa functioneaza, cu artificiu in hidden. La intrarea in functia ajax initializez valoarea hidden la sir vid, iar rezultatul din ajax il pun tot in acest hidden. Multumesc oricum.

MarPlo Mesaje:4343
Se poate si astfel, daca gasesti ca ar fi mai simplu; sa aplici submit-ul din javascrpt /ajax.
Functia ajax sa returneze false, iar la "success" aplici submit() la acel form cand vrei.

Cod: Selectaţi tot

function existaanluna(param){
  //codul tau pt ajax..
  success : function(msg){
    if(msg.length>0) alert(msg);
    else document.getElementById('id_form').submit();
  }
  return false;
}