Получить php результаты с jquery ajax - PullRequest
0 голосов
/ 09 августа 2010

Я не знаю, почему мне так тяжело, но пришло время подойти к эфиру и задать вопрос.

Каков наилучший способ вызвать php-файл с помощью jquery ajax, обработать некоторые входные данные через $ _GET, вернуть эти результаты и снова использовать ajax для замены содержимого div?

Пока что я могу вызывать php-файл, и в случае успешного вызова jjery ajax я получаю предупреждение о тексте.

$.ajax({
        url: "xxx/xxx.php", 
        type: "GET",
        data: data,     
        cache: false,
        success: function (html) {
            alert("HTLM = " + html);
            $('#product-list').html(html);
            }
 });

Я установил функцию php для отображения результата, предупреждение выплевывает html из файла php. Но я получаю побочный эффект. Я получаю код, сгенерированный php эхом в верхней части страницы. Так что php делает свою работу (повторяя контент). Следующий jquery выполняет свою работу, заменяя содержимое div значениями из файла php.

Как мне остановить php-файл от повторения содержимого в верхней части страницы?

Пример кода выводится из php и оповещается в случае успеха jquery ajax

HTML =

<div class="quarter">
  <div class="thumb">
    <a href="productinfo.php?prod-code=Y-32Z&cat=bw&sub=">
      <img src="products/thumbs/no_thumb.gif" alt="No Image" border="0" />
    </a>
  </div>
  <div class="labels"><span class="new-label">New</span></div>
  <p><span class="prod-name">32OZ YARD</span></p>
  <p><span class="prod-code">Y-32Z</span></p>
</div>

Спасибо !!!

-Kris

Ответы [ 3 ]

4 голосов
/ 10 августа 2010

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

Задайте свой вопрос:)

РЕДАКТИРОВАТЬ В ВОПРОС ОТВЕТА

<div id="product-list">
<?php include 'products.php' ?>
</div>

Ваша функция ajax теперь будет перезаписывать содержимое php при запуске и выводить в # product-list

0 голосов
/ 10 августа 2010

Ваш вопрос не совсем понятен, но похоже, что вы хотите использовать только ЧАСТЬ данных ответа. Если это так, то есть 2 способа:

Во-первых, вы можете проверить на стороне PHP, запрашивается ли он через AJAX. Это решение я бы использовал, так как оно предотвращает бесполезную передачу данных клиенту:

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
...
if(!IS_AJAX) {
    // anything here will NOT be sent in response to ajax requests
}

Кроме того, вы можете пометить часть данных ответа, которую вы хотите использовать, с помощью идентификатора, а затем выполнить поиск в возвращенных данных по этому идентификатору:

<h1>Don't care about this</h1>
<div id="use_this">This is the useful data.</div>

Тогда для вашего ответного обратного вызова ajax:

success = function(data) {
    data = $(data).find('#use_this');
    // do whatever
}
0 голосов
/ 10 августа 2010

Если вы хотите избежать показа заголовка и тегов тела, только содержимого, вам необходимо определить, когда запрос AJAX на стороне PHP.

Некоторый псевдокод:

IF (!IS_AJAX)
    HTML
    HEADER
    BODY
ENDIF

CONTENTS

IF (!IS_AJAX)
    /BODY
    /HTML
ENDIF

Поиск HTTP_X_REQUESTED_WITH здесь в stackoverflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...