JQuery 'If' оператор сравнения строк не работает - PullRequest
11 голосов
/ 13 июля 2010

Мне очень трудно сделать что-то очень простое. Вот код:

        if(data == 'success') {

            alert('foo');

        } else {

            alert(data);

        }

Я упростил это, но это все, что нужно, чтобы понять, что происходит. переменная data является результатом вызова AJAX, если это имеет значение. Проблема в том, что он всегда обращается к оператору «else» и предупреждает об «успехе», чего не следует делать, если он обращается к «else». Есть идеи, что здесь происходит?

РЕДАКТИРОВАТЬ: Вот полный код AJAX в jQuery:

$.post("/manage_sites.php", {before:before, edit:after}, function(data){

        if(data == success) {

            alert('blah');

        } else {
            alert(data);
        }
    });

А затем в ответе PHP:

...code....
$update = mysql_query("UPDATE users SET feeds = '$afterFeed' WHERE username = '$name'") or     die("Query Failed");

if($update) {

    echo  'success';  //this is the 'string' that is being given to 'data'
}

Ответы [ 3 ]

29 голосов
/ 13 июля 2010

Вы можете исправить это на стороне клиента, используя $.trim(), например:

if($.trim(data) == 'success') {

Или, лучшим подходом было бы удаление новой строки, поступающей со стороны сервера, возможно, ошибочной новой строки где-то в вашем PHP, проверьте до или после блока <? ?>, это чаще всего там, где они обрезаются до.

Или просто выйдите после вывода контента, например:

if($update) {
  echo 'success';
  exit();
}
0 голосов
/ 12 апреля 2014

Проверка на стороне клиента работает нормально.

$.trim() fine.

Спасибо, Ник.Мне потребовалось много времени, чтобы понять, почему это не работает ...

0 голосов
/ 13 июля 2010

Вы можете удалить трейлинг?> В своем файле, если это последняя строка в файле.Я хочу ответить на комментарии к исходной проблеме, но не понимаю, как.

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