JQuery Ajax возвращает всю страницу
У меня есть функция jquery-ajax, которая отправляет данные в сценарий php, и проблема заключается в возвращаемом значении, он возвращает всю страницу вместо одного значения.
Спасибо за ваше время и помощь.
$("#ajaxBtn").click(function(){
var inputText = $("#testText").val();
$.ajax({ type: "POST",
url: "index.php",
data: "testAjax="+inputText,
dataType: "html",
success: function(html){
alert(html);
}
});
});
3 ответа
Вот как это работает. Вы запрашиваете index.php
через AJAX, так что вы получите все содержимое index.php
являются.
Если вы хотите конкретное значение, создайте новую страницу PHP, которая выводит только это значение, и вместо этого запросите содержимое этого URL.
Так что, когда у вас есть это на вашем index.php
в начале?:
<?php
if (isset($_POST["testAjax"])) {
echo $_POST["testAjax"];
}
?>
Если этот скрипт выводит дополнительный текст, то, конечно, он также будет получен вызовом Ajax. Вы можете положить exit()
после эха, чтобы предотвратить дальнейшую обработку скрипта:
if (isset($_POST["testAjax"])) {
echo $_POST["testAjax"];
exit();
}
Также используйте dataType: 'text'
поскольку возвращаемое вами значение, очевидно, не является HTML.
Или, как предлагают другие, создайте новую страницу, которая отвечает за обработку запроса Ajax. Если вы делаете больше, чем просто выводите полученное значение (т. Е. Более сложные операции), вы должны сделать это в любом случае.
София, В вашем случае вы не должны отправлять свои данные в php-файл, который при просмотре через веб-браузер отображает страницу веб-сайта. Вы должны отправить свою информацию в php-файл, который возвращает только те данные, которые вы хотели бы видеть возвращенными.
Поэтому вместо "index.php" создайте файл с именем "my-ajax-script.php". Этот файл должен включать все необходимые файлы "include()" для подключения к базе данных и вашим файлам функций php (т. Е. Для очистки данных POST). Затем файл должен иметь код, который обрабатывает данные POST и выводит данные вместе с некоторыми HTML-тегами. Эти данные будут вставлены в ваш существующий DOM (html-разметка).
Я только что перешел с чистого JavaScript на jQuery из-за давления со стороны сверстников и нахожу это разочаровывающим. В частности, получение целых страниц PHP из запроса Ajax POST. Я читал и перечитывал эту страницу несколько раз за последние два дня, когда это продолжалось. В конце концов, проблема в обоих случаях заключалась в том, что я либо неправильно написал URL-адрес php в настройке Ajax, либо указал неправильный путь к файлу.
Иногда сбивают с толку самые простые мелочи!
Я надеюсь, что это сэкономит кому-нибудь время...
Обновлено 2020: если вы используете платформу MVC, то URL-адрес НЕ ДОЛЖЕН быть index.php, вместо этого используется полный каталог:
url: "http://localhost/mvc/controller/function/param1/param2",
Старый ответ 2019:
В моем случае любой, у кого есть такая же проблема, пытается использовать
require_once
вместо того require
в вашем php-файле начальной загрузки, чтобы предотвратить повторный рендеринг всей страницы через систему.
Используйте условие, чтобы проверить, пуст ли $_POST на вашей главной странице или index.php, чтобы не отправлять всю страницу в ответ ajax
<?php
if(empty($_POST)){ ?>
//
<html>
the header pages
the body
the include pages
the scripts pages
the footer
<?php } ?>