2010-08-26 3 views
0

У меня есть скрипт PHP, который я вызываю с помощью функции .post() в jQuery. Если все пойдет хорошо, оно выдает «WIN», в противном случае он выдает любые ошибки базы данных или что-то еще.Обратный вызов AJAX не обрабатывает данные правильно

$.post("myscript.php", {key: "value"}, function(data) { 
    if(data=="WIN") { 
     // the stuff that I want it to do that it won't do 
    } else { 
     alert(data); 
    } 
}); 

Когда он работает, однако, я получаю «WIN» в боевой готовности JS, и вещи, которые я хочу, чтобы это сделать, не бывает. Поскольку в уведомлении появляется сообщение «WIN», скрипт PHP явно выводит то, что я ожидал. Я даже позаботился, чтобы установить Content-Type сценария PHP на text/plain, поэтому почему не data=="WIN". Почему мой WIN FAIL?

ответ

1

Вы проверили пробелы? Любые пробелы до или после echo "WIN" будут влиять на выходные данные, а также проверять пробелы до и после тэгов <?php.

+1

Хмм хороший пункт. Я думаю, что я избавился от всех пробелов перед «WIN», но моя IDE, кажется, добавляет новую строку в конце файла каждый раз, когда я сохраняю. Может быть, я должен отфильтровать пробелы в javascript. – DLH

+0

'data.replace (/^\ s + | \ s + $/g, '');' подрезанные вещи действительно хороши. – DLH

+0

О, не знаю, я только что понял, что jQuery имеет функцию '.trim()'. Я буду использовать это. – DLH

0

Вы, скорее всего, пытаетесь получить доступ к возвращенным данным из «данных» напрямую. Попробуйте

alert(data.d); 

Я думаю, что вы обнаружите, что возвращаемые данные находятся в собственности. Если я правильно помню, это имя свойства «d». Используйте плагин FireFox FireBug для просмотра возвращенных данных. Это очень полезно для отладки AJAX.

Удачи!

+0

Если возвращаемые данные являются обычным текстом, то «данные» должны быть точным выходом файла из того, что я понимаю. Я думаю, что все свойства в основном относятся к данным JSON. – DLH

Смежные вопросы