Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вне зависимости от переменной условие заходит только в один блок (https://javascript.ru/forum/misc/50327-vne-zavisimosti-ot-peremennojj-uslovie-zakhodit-tolko-v-odin-blok.html)

conterden2 21.09.2014 22:45

Вне зависимости от переменной условие заходит только в один блок
 
Здравствуйте. Столкнулся с проблемой - в не зависимости переменной, условие переходит в один и тот же блок. В checksms.php возвращается только true или false. Проверяю alert-ом перед условием - показывает все как надо. Но в условии опять срабатывает один и тот же блок Подскажите, пожалуйста, в чем ошибка.
var checkSMSCode=false;
var confCod = $("#confCode").val();
$.ajax({      
		async: false,
		type: "POST",
		url: "checksms.php",
		data: "code="+confCod,
		success: function(info) {
				checkSMSCode=info;
			   
		}
});
alert(checkSMSCode);
if (!checkSMSCode) //Вот это условие
{
	var err_text1="<center>Код неверный!</center>";
	$("#mess1").html(err_text1);	
	$("#mess1").fadeIn("slow");
}
else //заходит в этот блок
{
	$.ajax({
		url: "/registr/handler.php",
		type: "POST",
		data: "name="+name,
		success: function(inf){
				$("#messenger").html(inf);	
				$("#messenger").fadeIn("slow");	
		},
		error: function(){
				err_text="Отправка не завершена";
				$("#messenger").html(err_text);	
				$("#messenger").fadeIn("slow");	
		}
	});
	ConfirmPhoneExit();     
}

kostyanet 22.09.2014 09:09

У ТС там текст, есть такой прикол с этими true-false-null.

ТС, давайте из php или 0 или 1. Эти символы автоматически вычисляются в условиях и сравнениях. По крайней мере так должно быть в резиновых языках.

kostyanet 22.09.2014 09:26

Ну да, так не получится, я думал о сравнении, а написал об определении. В сравнениях - работает. Типа

var somevar == '0'
if(somevar > 0)
//  go to end


Но, зато с цифрами легко делать кастинг

var somevar='0';
alert(!+somevar);


Но все равно надо знать заранее что там.

Короче, чтобы не мучиться с текстами - отдавайте из php - json. Будет вам и труе и фолс и кофэ...

kostyanet 22.09.2014 09:40

Подумал что ТС просто не понимает в чем там затык: php отдает текст. Никаких чисел, никаких битов - голимый текст применительно к вопросу. Чтобы нормально, то есть без колхозного преобразования вручную получать те же самые данные, надо их закатать в синтаксис json. Это - текст который интепрентируется как данные.

В php - json_encode, в js - JSON.parse - все элементарно.

С одним только условием - ваши паги должны быть в utf-8, или придется перед жисоном конвертить в юникод из известной вам кодировки страниц.

Пример из открытого сырца либы закачки файла:

if (!$in = @fopen("php://input", "rb")) {
		die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
	}


То есть прямо в die() валите строку в формате json и все. Если там простые данные - json_encode не нужен конечно. Но, в теории перед отправкой такой строки надо дать соответствующий заголовок, на практике - не надо.

kostyanet 22.09.2014 09:49

Нет никакого суксесс в XMLHttpRequest 8) То есть ТС должен это знать что это jquery ему такой сервис обеспечивает - я не знал, ибо jquery - димедрол.

conterden2 22.09.2014 20:38

Всем спасибо, проблема решилась заменой true на 1.

kostyanet 23.09.2014 10:29

Это сегодня она решилась, а завтра появится снова. Текст это text/html - mime type, а ваша 1 - boolean variable. У нее нет mime. Я понимаю что колхозные методы легче, но не проще - проще только поначалу, а потом все придется переписывать. Индустриальные методы сложнее, но зато разобравшись один раз - не знаете горя.


Часовой пояс GMT +3, время: 15:54.