Добрый день. Как-то спрашивал тут вопрос, в принципе ответили, а сейчас решил сесть разобраться и что-то не выходит.
Если в двух словах вопрос такой. Я регулярно отправляю разные формы, перед этим делаю проверку на заполнение полей. Скрипт делает серелизацию данных всех полей отправляет на сервер, там данные проверяются и назад идет ответ с ошибкой или если все хорошо форма обсубмичивается и отправляются данные опять на сервер, но уже на повторную обработку и сохранение.
Так как порядок действий везде одинаков хорошо бы написать одну фуцею которая бы это делала. И это есть. Но иногда нужно чтото особенное, например данные после проверки не обсубмичиваются а чтото с ними происходит.
Так. Хотелось бы иметь скрип который проверял данные и возвращаю ТРУ если все хорошо, или ФОЛЗ если все плохо.
Так как это выглядит примерно:
if(verify()){
ok
} else {
bad
}
То у меня всегда в месте условия было "undefined", написал про это здесь где мне и посоветовали обратиться к параметру "async". Установил в фолз и если честно не то что нужно.
Пример. Если сделать код таким:
var ajaxtest = new Object({
run: function(){
$.ajax({
url: "ajaxtest.php",
global: false,
type: "POST",
data: ({sendvar: 1}),
dataType: "json",
async: false,
success: function(answer){
if(answer.error == 200){
alert('1');
}
},
error: function (answer, status, e){
alert("Error " + e);
}
});
}
});
//Run
$(document).ready(function() {
ajaxtest.run();
alert('2');
});
Выводится как и положено 1, 2. Если ставить async: true, то порядок 2,1 что неправильно.
Как бы все хорошо, но мне не нужно алерты выводить, мне нужно вернуть или тру или фолз.
Переписываю пример:
var ajaxtest = new Object({
run: function(){
$.ajax({
url: "ajaxtest.php",
global: false,
type: "POST",
data: ({sendvar: 1}),
dataType: "json",
async: false,
success: function(answer){
if(answer.error == 200){
return 200;
}
},
error: function (answer, status, e){
alert("Error " + e);
}
});
}
});
//Run
$(document).ready(function() {
var a = ajaxtest.run();
alert(a);
alert('2');
});
Тут уже все плохо. Получаем "undefined", "2". Хотя ожидается "200", "2".
И третий пример подобный второму:
var ajaxtest = new Object({
run: function(){
$.ajax({
url: "ajaxtest.php",
global: false,
type: "POST",
data: ({sendvar: 1}),
dataType: "json",
async: false,
success: function(answer){
if(answer.error == 200){
return true;
}
},
error: function (answer, status, e){
alert("Error " + e);
}
});
}
});
//Run
$(document).ready(function() {
if(ajaxtest.run()){
alert('400');
}
alert('2');
});
Выводится только "2", хотя предполагается 400, 2.
Подскажите как правильно все составить чтоб можно было пользоваться конструкцией как эта:
if(ajaxtest.run()){
alert('400');
}
Спасибо за ваше время и советы.