使用jquery ajax获取php结果

时间:2010-08-09 19:45:21

标签: php jquery ajax

我不知道为什么我在这方面遇到了困难,但现在是时候我出现了问题并问了这个问题。

使用jquery ajax调用php文件的最佳方法是什么,让它通过$ _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函数来回显结果,警报从php文件中吐出html。但是我有副作用。我得到了php生成的代码在页面顶部回显。所以php正在做它的工作(通过回应内容)。接下来,jquery通过用php文件中的值替换div的内容来完成它的工作。

如何阻止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 个答案:

答案 0 :(得分:4)

您是否在页面顶部包含用于ajax调用的php文件?如果是这样你就不需要了。这会导致数据在顶部转储。

提出你的问题:)

编辑回答问题

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

你的ajax函数现在会在运行时覆盖php内容并输出到#product-list

答案 1 :(得分:0)

如果您的意思是要避免显示标题和正文标记,只需要显示内容,则需要在AJAX侧检测请求的时间PHP

一些伪代码是:

IF (!IS_AJAX)
    HTML
    HEADER
    BODY
ENDIF

CONTENTS

IF (!IS_AJAX)
    /BODY
    /HTML
ENDIF

在stackoverflow

处搜索HTTP_X_REQUESTED_WITH

答案 2 :(得分:0)

您的问题并不完全清楚,但听起来您只想使用响应数据的PART。如果是这种情况,那么有两种方法可以解决这个问题:

首先,您可以在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标记要使用的响应数据部分,然后在返回的数据中搜索该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
}