Сравнение строк, возвращаемых из php, в jQuery не работает - PullRequest
0 голосов
/ 07 августа 2011

Я возвращаю строковую форму php и сравниваю ее с другой строкой в ​​jQuery. Я на 100% уверен, что строки совпадают (ну, по крайней мере, имеют одинаковое значение ...), но все же мое предложение if думает иначе.

Это часть моего php-скрипта, которая устанавливает возвращаемое значение:

if (!$result){
        echo "false";
        exit();
    }

Это мой jQuery, который выполняет сопоставление:

$.post("registeraccount.php",$(this).serialize(),function(msg){
        //alert the response from the server
        alert(msg + " = " + (msg == "false"));
        if(msg == "false"){
            $("#adminarea").html("Error");

        }else{
            $("#adminarea").html("Success");
        }

   });

Независимо от того, что строки равны или не равны, на веб-странице всегда печатается «Успех».

В предупреждении я получаю следующий результат "false = false". Следовательно, (msg == "false") является ложным.

Почему строки не соответствуют действительности, когда они равны, и как мне это исправить?

Ответы [ 2 ]

4 голосов
/ 07 августа 2011

Полагаю, причина в том, что msg, ваш серверный вывод, никогда не будет точно"ложным" из-за добавления некоторых концов строк или подобных вещей в вашем PHP-скрипте (вы можете проверитьесли msg имеет длину, которую вы ожидаете проверить эту гипотезу).В этом случае вы можете попробовать использовать это:

 if (msg.match(/false/)) {

, который при необходимости выполняет несколько менее строгое сравнение, гарантируя, что вывод содержит строку «false» (в любой позиции).Если это работает, я предлагаю вам использовать вместо этого сравнения:

 if (msg.match(/^false$/)) {

, что гарантирует, что false будет целой строкой вашего текста.

0 голосов
/ 07 августа 2011

Вы должны использовать === для сравнения на равенство в JavaScript.

Если у вас есть время, посмотрите видео-серию о Крокфорде на javascript. Он охватывает эту и многие другие темы javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...