2010-04-06 9 views
15

У меня есть функция jquery-ajax, которая отправляет данные в php-скрипт, и проблема связана с возвращаемым значением, она возвращает целую страницу вместо одного значения.jQuery Ajax возвращает всю страницу

Благодарим вас за внимание и помощь.

$("#ajaxBtn").click(function(){ 
var inputText = $("#testText").val(); 

$.ajax({ type: "POST", 
url: "index.php", 
data: "testAjax="+inputText, 
dataType: "html", 
success: function(html){ 
alert(html); 
} 
}); 
});   
+0

Какова ожидаемая стоимость возврата? JSON, текст, XML и т. Д.?? Я предполагаю, что это имеет какое-то отношение к вашему скрипту PHP, поэтому было бы полезно, если бы вы опубликовали его. –

+1

правильно, вот код:

+0

Я знаю, что через два года после этого факта, но я столкнулся с этой проблемой. Мне нужны постоянные объекты, и поэтому я решил, что вызов ajax на той же странице будет достаточным. К сожалению нет, я получаю всю страницу как ответ. – Dale

ответ

28

Вот как это работает. Вы запрашиваете index.php через AJAX, так что вы получите все содержимое index.php.

Если вы хотите получить конкретное значение, создайте новую страницу PHP, которая выводит именно это значение, и вместо этого запрашивает содержимое этого URL-адреса.

+0

Спасибо! Я изменил запрос на страницу «ajax.php», и он отлично работает! –

5

Sophia, В вашем случае вы не должны отправлять свои данные в php-файл, который, если смотреть в веб-браузере, отображает страницу веб-сайта. Вы должны отправить свою информацию в файл php, который возвращает только те данные, которые вы хотите увидеть.

Итак, вместо «index.php» создайте файл с именем «my-ajax-script.php». Этот файл должен содержать любые необходимые «include()» файлы для подключения к базе данных и вашим файлам php-функций (т. Е. Для дезинфекции данных POST). Затем файл должен иметь код, обрабатывающий данные POST, а echo - данные, заполненные некоторыми тэгами html. Эти данные будут вставлены в ваш существующий DOM (html-разметка).

9

Так что, когда у вас есть это на index.php в начале ?:

<?php 
    if (isset($_POST["testAjax"])) { 
     echo $_POST["testAjax"]; 
    } 
?> 

Если этот сценарий выводит дополнительный текст, то, конечно, это будет также полученый при вызове Ajax. Вы можете поставить exit() после эха, чтобы предотвратить сценарий из обработки дополнительно:

if (isset($_POST["testAjax"])) { 
    echo $_POST["testAjax"]; 
    exit(); 
} 

Также используйте dataType: 'text' в качестве значения вы вернетесь, очевидно, не HTML.


Или, как предлагают другие, создайте новую страницу, которая отвечает за обращение с запросом Ajax. Если вы делаете больше, чем просто вывод полученного значения (т. Е. Более сложные операции), вы должны сделать это в любом случае.

+0

Ты спас меня! –

+0

@ Феликс, я сталкиваюсь с этой аналогичной проблемой. Можете ли вы подробнее рассказать о своем ответе? Я беру данные из html-формы и передавая ее в php/mysql-запрос. Итак, я включил все в один файл. Есть ли лучший способ справиться с этим? любые ссылки на пример помогут. Спасибо – user5249203

+0

Человек, которым вы являетесь. Мне жаль, что я не могу + больше 1 –

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