21.09.2014, 22:45
|
Новичок на форуме
|
|
Регистрация: 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();
}
|
|
22.09.2014, 04:57
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 1,586
|
|
conterden2,
alert(!'true');
alert(!'false');
Надо так проверять alert(!checkSMSCode);
Последний раз редактировалось Rise, 22.09.2014 в 05:00.
|
|
22.09.2014, 09:09
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
У ТС там текст, есть такой прикол с этими true-false-null.
ТС, давайте из php или 0 или 1. Эти символы автоматически вычисляются в условиях и сравнениях. По крайней мере так должно быть в резиновых языках.
|
|
22.09.2014, 09:16
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 1,586
|
|
kostyanet,
alert(!'0');
alert(!'1');
|
|
22.09.2014, 09:26
|
Профессор
|
|
Регистрация: 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.
|
|
22.09.2014, 09:40
|
Профессор
|
|
Регистрация: 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.
|
|
22.09.2014, 09:44
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 1,586
|
|
kostyanet, JSON.parse не нужен в success, он по умолчанию там происходит с ответом json.
Последний раз редактировалось Rise, 22.09.2014 в 09:46.
|
|
22.09.2014, 09:49
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Нет никакого суксесс в XMLHttpRequest 8) То есть ТС должен это знать что это jquery ему такой сервис обеспечивает - я не знал, ибо jquery - димедрол.
|
|
22.09.2014, 20:38
|
Новичок на форуме
|
|
Регистрация: 21.09.2014
Сообщений: 2
|
|
Всем спасибо, проблема решилась заменой true на 1.
|
|
23.09.2014, 10:29
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Это сегодня она решилась, а завтра появится снова. Текст это text/html - mime type, а ваша 1 - boolean variable. У нее нет mime. Я понимаю что колхозные методы легче, но не проще - проще только поначалу, а потом все придется переписывать. Индустриальные методы сложнее, но зато разобравшись один раз - не знаете горя.
Последний раз редактировалось kostyanet, 23.09.2014 в 10:32.
|
|
|
|