Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.09.2014, 22:45
Новичок на форуме
Отправить личное сообщение для conterden2 Посмотреть профиль Найти все сообщения от conterden2
 
Регистрация: 21.09.2014
Сообщений: 2

Вне зависимости от переменной условие заходит только в один блок
Здравствуйте. Столкнулся с проблемой - в не зависимости переменной, условие переходит в один и тот же блок. В 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();     
}
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2014, 04:57
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

conterden2,
alert(!'true');
alert(!'false');

Надо так проверять alert(!checkSMSCode);

Последний раз редактировалось Rise, 22.09.2014 в 05:00.
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2014, 09:09
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

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

ТС, давайте из php или 0 или 1. Эти символы автоматически вычисляются в условиях и сравнениях. По крайней мере так должно быть в резиновых языках.
Ответить с цитированием
  #4 (permalink)  
Старый 22.09.2014, 09:16
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

kostyanet,
alert(!'0');
alert(!'1');
Ответить с цитированием
  #5 (permalink)  
Старый 22.09.2014, 09:26
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

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

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


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

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


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

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

Последний раз редактировалось kostyanet, 22.09.2014 в 09:30.
Ответить с цитированием
  #6 (permalink)  
Старый 22.09.2014, 09:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Подумал что ТС просто не понимает в чем там затык: 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:46.
Ответить с цитированием
  #7 (permalink)  
Старый 22.09.2014, 09:44
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

kostyanet, JSON.parse не нужен в success, он по умолчанию там происходит с ответом json.

Последний раз редактировалось Rise, 22.09.2014 в 09:46.
Ответить с цитированием
  #8 (permalink)  
Старый 22.09.2014, 09:49
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Нет никакого суксесс в XMLHttpRequest 8) То есть ТС должен это знать что это jquery ему такой сервис обеспечивает - я не знал, ибо jquery - димедрол.
Ответить с цитированием
  #9 (permalink)  
Старый 22.09.2014, 20:38
Новичок на форуме
Отправить личное сообщение для conterden2 Посмотреть профиль Найти все сообщения от conterden2
 
Регистрация: 21.09.2014
Сообщений: 2

Всем спасибо, проблема решилась заменой true на 1.
Ответить с цитированием
  #10 (permalink)  
Старый 23.09.2014, 10:29
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

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

Последний раз редактировалось kostyanet, 23.09.2014 в 10:32.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть/показать блок в зависимости от radio MBmusic Элементы интерфейса 10 08.05.2013 17:23
Только один из трех элементов может быть активен Volchen0ck Events/DOM/Window 5 27.01.2013 17:05
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55