Подтвердить что ты не робот

JQuery Неверное сравнение строк инструкции "If"

Мне очень тяжело пытаться сделать что-то очень простое. Здесь код:

        if(data == 'success') {

            alert('foo');

        } else {

            alert(data);

        }

Я упростил это, но это все, что необходимо для понимания того, что происходит. переменная "данные" является результатом вызова AJAX, если это имеет значение. Проблема в том, что она всегда идет в "else", и она предупреждает "успех", чего не следует, если она переходит в "else". Любая идея, что здесь происходит?

EDIT: здесь полный код 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'
}
4b9b3361

Ответ 1

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

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

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

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

if($update) {
  echo 'success';
  exit();
}

Ответ 2

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

Ответ 3

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

$.trim() fine.

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