Поведение обратного дата Ajax
Мои сомнения, технику.
Хотел бы лучше понять, что произошло.
Я провел несколько дней, пытаясь решить проблему в моем коде. Я обнаружил, что функции ajax
php
неправильны. Две функции PHP
были очень похожи, но один работает, а другой нет. Оба должны возвращать переменную $resposta
, HTML-код должен быть вставлен в страницу. Ex:
$resposta = '<span>Alô mundo!</span>';
В конце, я заметила, что он работал, имел линий код:
echo $resposta;
return $resposta;
И что не работал, имел только
return $resposta
Оказывается, что команда " эхо " было то, что действительно работает. Итак, мой вопрос: если функция ajax говорила:
function chamaM(id_chamado){ //-------> Estava funcionando
$.ajax({
type: 'POST',
url: 'scriptPHP3.php',
data: 'id=' + id_chamado,
success: function(data){
$('#teste').html(data);
}
});
}
function chamaTb(id_chamado, id_m){ //-------> NÃO estava funcionando
$.ajax({
type: 'POST',
url: 'scriptPHP3.php',
data: { id: id_chamado, ind_m: id_m },
success: function(data){
$('#teste').html(data);
}
});
}
, Потому что 'success' возвращает 'эхо', а не 'return'? Спрашиваю, потому что только я положил эхо, чтобы увидеть, если функция работает. В противном случае, было бы пытаясь понять, ошибка до сих пор. Большое вас спасибо за ответ. Если нужно, вот код актуально в HTML и PHP:
.HTML
<div id="menu-container">
<a id="m1" class="ativo">m1</a>
<a id="m2">m2</a>
<a id="m3">m3</a>
</div><!-- #menu-container -->
<div id="teste">/*DIV ONDE SERÁ POSTO O CONTEÚDO PROCESSADO*/</div>
.PHP
if (isset( $_POST["ind_m"] ) && isset( $_POST["id"] ) ) {
cliqueTb( $_POST["id"], $_POST["ind_m"] );
} elseif (isset ($_POST["id"] ) ) {
cliqueM( $_POST["id"] );
}
function cliqueTb( x, y ) { //-------> NÃO estava funcionando
PROCESSAMENTO;
return $resposta;
}
function cliqueM( x ) { //-------> Estava funcionando
PROCESSAMENTO;
echo $resposta; //-------> 'echo' retorna o valor e não o 'return'
return $resposta;
}
2 answers
Ваш технический вопрос имеет ответ-очень просто.
AJAX-это метод, чтобы приказать в содержание адрес "за кулисами". Такой контент output, что сервер отправил браузеру, как ответ.
И в том, что приложение отправляет содержимое? Эхом / "printando" что-то в программе. Когда запрос, если завершить, то содержимое будет показано для тех, кто заказали, будь то человек, будь подпрограммы программный.
Return не производит контент, он получает поток выполнения программы в локальной области функции для глобального/внешний:
$name = 'Bruno Augusto';
$age = getAge();
function getAge() {
return 26;
}
echo 'Nome: ', $name, ' .Idade: ', $age; // Nome; bruno Augusto. Idade: 26
И в то Время как настройка переменных, мы в глобальной области видимости внешнего. Следовательно, у нас есть функция PHP, которая имеет область действия собственных, местных, независимых. И после того как мы echo, обратно к глобальной области действия, который показывает фразу.
Без return код работает войдет в функцию, когда таким же был вызван ($age), но никогда не выйдет из нее.
И return не производит контент, а не будет существовать Response Body. И если не имеет тела, не имеет с тем, что AJAX работать.
Ваш код JavaScript/jQuery делает запрос HTTP на сервер. PHP получает, обрабатывает и отвечает на этот запрос. Двумя языками (JavaScript и PHP), не говорят напрямую, только через запросы и ответы HTTP.
В случае HTML, HTTP-ответ, в основном текст, содержащий HTML. Команда echo
PHP пишет в выходных данных программы, что и будет для ответа HTTP. return
не пишет в выходной, просто заставляет функцию возвращать значение, для которого вызвал (за собственный PHP). И вызов, который не работает, был в этой строке:
cliqueTb( $_POST["id"], $_POST["ind_m"] );
Строка ничего не делает, с возвратом из функции. Она могла бы написать возвращаемое значение в выходе из программы, которая была бы другой способ сделать содержимое отображается в HTTP-ответа:
echo cliqueTb( $_POST["id"], $_POST["ind_m"] );