2010-08-09 2 views
0

Я не знаю, почему мне с этим трудно, но пришло время, когда я подошел к воздуху и задал вопрос.Получить результаты php с помощью jquery ajax

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

До сих пор я могу вызвать php-файл, и в случае успеха jQuery 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

+0

вы могли бы предоставить образец разметки, который возвращается? – Ender

+0

Я добавил некоторую разметку, которая предупреждается об успешности jQuery ajax. –

+0

Независимо от того, что вы эхо в php-файле, будет выкачаться JQuery. Если вы не хотите, чтобы он возвращался в JQuery, вы не можете повторить его на странице php. – Luke

ответ

4

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

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

EDIT для ответа на вопрос

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

Ваша функция Аякса теперь будет перезаписать содержимое PHP, когда он работает и выводит # продакт-список

+0

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

+0

Нет jquery/javascript modifys на странице, когда он жив, пауки не имеют javascript, поэтому не могут получить контент. Зачем вам нужен jquery для включения контента, можете ли вы не просто использовать php? Если бы кто-то просматривал ваш сайт без включенного javascript (если вы не включали файл php), они не смогли бы просмотреть ваши продукты. – Luke

+0

Как включить файл, чтобы я мог запускать загрузку исходного контента, но тогда не включать это когда мне нужно эхо для jquery + ajax? Я не хотел делать отдельный файл. –

0

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

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

IF (!IS_AJAX) 
    HTML 
    HEADER 
    BODY 
ENDIF 

CONTENTS 

IF (!IS_AJAX) 
    /BODY 
    /HTML 
ENDIF 

HTTP_X_REQUESTED_WITH Искать здесь StackOverflow

+0

HTTP_X_REQUESTED_WITH не всегда доступен в массиве $ _SERVER – sunwukung

+0

Я этого не знал, но я бы добавил переменную для получения содержимого AJAx. Таким образом, поиск данного заголовка будет тесно связан с –

0

Ваш вопрос не совсем ясно, но это звучит, как вы хотите использовать только часть данных отклика. Если это так, то есть два способа сделать это:

Во-первых, вы можете проверить на стороне 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 
}

В качестве альтернативы, вы можете пометить часть данных ответа, который вы хотите использовать с идентификатором, то поиск возвращаемым данные для этого ID:

 
<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

Нет. Я хочу получить все данные ответа. Я получаю ответ эхом в верхней части страницы, а также содержимое загружается в div с jquery. –

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