stop = false; jQuery проблем

kWo_2

Registered
Вече стана цяла вечер го мъча не става и не става

Защо това stop = false ; не работи когато резултата не е равен на "a" , а по принцип при други проверки си работи при проверката, ако има stop = false; да не се изпълнява даден код.. ама тук нещо не го отразява :?

$('.cccr').click(function(){

var testa= $('#testa').val();
$.ajax({
type: "POST",
url: "test.php",
data: "testa="+ testa,
success: function(msgto){
if ($(msgto) != "a") { stop=false; } else { }
}
});
});
 
Liberate каза:
$('.cccr').click(function(){

var testa= $('#testa').val();
$.ajax({
type: "POST",
url: "test.php",
data: "testa="+ testa,
success: function('msgto'){
if ($('msgto') != "a") { stop=false; } else { }
}
});
});
???
Ти имаш ли понятие от JS стига си заблуждавал човека и си налучквал.

Да не би да искаш да ползваш return false; за да спреш функцията или само return;
 
m1ro return false аз го използвам, но проблема ми е чe при първата проверка stop = false; "в зелено" си работи, а при втората него отразява

сигурен съм че нещо не правя както трябва или нз, но ме измъчи много това

Ето целия код за малко повече ясно


$('.cccr').click(function(){
var Error = '';
var stop = true;

var testa= $('#testa').val();
var testo2= $('#testo2').val();

if((testo2.length) > 3) { $('#testo2_result').html('testo2 грешка').show(); stop = false; } else {
$('#testa_result').hide();
}}

$.ajax({
type: "POST",
url: "test.php",
data: "testa="+ testa,
success: function(msgto){
if ($(msgto) != "a") { stop=false; } else { }
}
});


if (stop) {

error_box = document.getElementById('.cccr');
error_box.style.display = 'block';
error_box.style.visibility = 'visible';
error_box.innerHTML = Error ;

}

return false;

});
 
success: function(msgto){
if ($(msgto) != "a") { stop=false; } else { }
}

защо $(msgto) ? msgto ти е текст, не поинтер към елемент.
И това stop дефинирал ли си го преди това?

Код:
success: function(msgto){
if (msgto != "a") { var stop = false; }
}
:roll:
 
alex95_bg_2 каза:
success: function(msgto){
if ($(msgto) != "a") { stop=false; } else { }
}

защо $(msgto) ? msgto ти е текст, не поинтер към елемент.
И това stop дефинирал ли си го преди това?

Код:
success: function(msgto){
if (msgto != "a") { var stop = false; }
}
:roll:

и така не става

пробвах какво ли не и не мога да разбера къде бъркам :lol:
 
Разгледай кода:
Код:
$('.cccr').click(function(){

    var stop = true;
    var testa= $('#testa').val();
    $.ajax({
        type: "POST",
        url: "test.php",
        data: "testa="+ testa,
        success: function(msgto){
        if (msgto != "a") { stop=false; } else { }
        }
    });

    alert(stop); //Ще извади TRUE
});

Причината поради която това ще извади TRUE, е че докато се изпраща аякс заявката, браузъра не спира да обработва кода. Смисал, когато браузъра стигне до реда alert(msgto), аякс заявката не е завършила още, защото тя отнема време (няколко милисекунди, но все пак е нещо...) и така callback функцията success не е изпълнена все още и затова скрипта не ти работи.
Трябва да изпълниш alert(msgto); след като е заредил аякса.
Ще трябва да си пренапишеш кода. Обясни какво точно искаш да направиш, за да може някой да ти помогне :)
 
$('.cccr').click(function(){

var testa= $('#testa').val();
$.ajax({
type: "POST",
url: "test.php",
data: "testa="+ testa,
async: false,
success: function(msgto){
if (msgto != "a") { stop=false; } else { }
}
});
});
 
marian каза:
$('.cccr').click(function(){

var testa= $('#testa').val();
$.ajax({
type: "POST",
url: "test.php",
data: "testa="+ testa,
async: false,
success: function(msgto){
if (msgto != "a") { stop=false; } else { }
}
});
});

Избави ме от много големи мъки :P Благодаря ти marian
както и на всички останали
 
Използването на async: false е доста лоша идея според мен. Ако скоростта на потребителя е по-ниска или нещо забави заявката, целия браузър замръзва, докато не завърши аякса... :lol:
 

Back
Горе