Показать сообщение отдельно
  #6 (permalink)  
Старый 23.02.2019, 18:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от 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';
?>

и никак иначе. Ну думайте, вникайте.

Последний раз редактировалось laimas, 24.02.2019 в 20:59.
Ответить с цитированием