首页 文章

使用jquery ajax获取php结果

提问于
浏览
0

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

使用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

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

    问你的问题:)

    编辑回答问题

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

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

  • 0

    如果您的意思是想要避免显示 Headers 和正文标记,只需要显示内容,则需要检测 AJAXPHP 侧的请求 .

    一些伪代码是:

    IF (!IS_AJAX)
        HTML
        HEADER
        BODY
    ENDIF
    
    CONTENTS
    
    IF (!IS_AJAX)
        /BODY
        /HTML
    ENDIF
    

    在stackoverflow搜索HTTP_X_REQUESTED_WITH

  • 4

    您的问题并不完全清楚,但听起来您只想使用响应数据的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
    }
    

相关问题