Сообщение от DeepDaft
|
Мой код ниже, но если я заменяю echo на exit, как это было у Вас, то получаю просто пустую страницу.
|
Значит вы не поняли сути из "развернутого" ответа. РНР, это интерпретатор - встретил строку "своего кода" преобразовал ее в байт-код, который будет выполняться, строки инструкций и прочего, строка за строкой. А если анализ находит закрывающий РНР тег ?>, то это не означает, что не будет выведено в браузер (не отдано клиенту) то, что будет находится после ?> Это будет просто вывод в браузер, без всякого компилирования, если нет в нем РНР кода.
Я же писал - если обычный запрос (ajax запрос), который делает клиент, направлен к странице, которая делает некий вывод в браузер (частный пример, это запрос к самой себе), а в ответ нужен только результат этого запроса, то нельзя помещать такой запрос в середину или в конец страницы, так как все это будет выведено также в браузер.
Такой обработчик запроса в таких случаях должен быть размещен до любого вывода в браузер!!! При этом передача заголовков не в ходит в это условие, они могут передаваться до обработчика.
И после завершения работы обработчика
должно быть обязательное завершение скрипта - exit; !!!
А вы что делаете - экспериментируете с echo? Ну правильно, эта конструкция выплюнет клиенту то что вы ей прописали, а далее будут простой вывод в браузер того, что после ?>
А с exit почему не получается? А потому, что ваш ajax запрос предается методом не POST, а GET:
$.get("goodino/goodinfo.php" .....
Но если вы в коде своем замените $_POST на $_GET, то это будет равносильно как $_POST с echo, а не exit. Причину надо пояснять или сами хотя бы попытаетесь понять?
Если $.get("goodino/goodinfo.php" ....., то не просто if ($_GET), а проверка некоторого параметра, который метод $.get() также должен передавать, тогда
<?php
if ($_GET
['mykey'])
exit '213';
?>
и никак иначе. Ну думайте, вникайте.