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'
}
Ответы
Ответ 1
Вы можете исправить это на стороне клиента, используя $.trim()
следующим образом:
if($.trim(data) == 'success') {
Или лучший подход - это удаление новой строки, исходящей с серверной стороны, возможно, ошибочной новой строки на вашем PHP где-нибудь, проверка перед или после блока <? ?>
, это чаще всего там, где они обрезают вверх.
Или просто выйдите после вывода вашего контента, например:
if($update) {
echo 'success';
exit();
}
Ответ 2
Вы можете удалить трейлинг? > в вашем файле, если это последняя строка в файле. Я хочу ответить на комментарии к исходной проблеме, но я не вижу, как.
Ответ 3
Проверка на стороне клиента работает нормально.
$.trim() fine.
Спасибо, Ник. Мне потребовалось много времени, чтобы понять, почему он не работает...