【问题标题】:jQuery Ajax returns the whole pagejQuery Ajax 返回整个页面
【发布时间】:2011-02-04 21:15:15
【问题描述】:

我有一个 jquery-ajax 函数将数据发送到 php 脚本,问题在于返回值,它返回整个页面而不是单个值。

感谢您的时间和帮助。

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

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

【问题讨论】:

  • 你期望的返回值是多少? JSON、文本、XML 等...?我想这与您的 PHP 脚本有关,所以如果您发布它会有所帮助。
  • 对,代码如下:
  • 我知道这是两年后的事,但我遇到了同样的问题。我需要持久对象,所以我认为对同一页面的 ajax 调用就足够了。很遗憾,没有,我将整个页面作为响应。

标签: php jquery return-value


【解决方案1】:

这就是它的工作原理。您通过 AJAX 请求 index.php,因此您将获得 index.php 的任何内容。

如果您想要一个特定的值,请创建一个仅输出该值的新 PHP 页面,然后请求该 URL 的内容。

【讨论】:

  • 谢谢!我将请求更改为“ajax.php”页面,它工作正常!
  • 哇,非常感谢。这真的很翔实。我在许多不同的项目中都面临这个问题,但不知道我哪里出错了。真的很有帮助!
【解决方案2】:

Sophia,在你的情况下,你不应该将你的数据发送到一个 php 文件,如果通过网络浏览器查看,它会显示一个网站页面。您应该将您的信息发送到一个只返回您希望返回的数据的 php 文件。

因此,不要创建“index.php”,而是创建一个名为“my-ajax-script.php”的文件。该文件应包括任何必要的“include()”文件以连接到数据库和您的 php 函数文件(即:用于清理 POST 数据)。然后该文件应该包含处理 POST 数据的代码,并用一些 html 标记完成数据的回显。此数据将插入到您现有的 DOM(html 标记)中。

【讨论】:

    【解决方案3】:

    那么,当你一开始在index.php 上有这个时?:

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

    如果此脚本正在输出更多文本,那么 Ajax 调用当然也会收到该文本。您可以在 echo 后面加上exit() 以防止脚本被进一步处理:

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

    也使用dataType: 'text',因为您返回的值显然不是 HTML。


    或者按照其他人的建议,创建一个负责处理 Ajax 请求的新页面。如果您所做的不仅仅是输出接收到的值(即更复杂的操作),那么无论如何您都应该这样做。

    【讨论】:

    • @Felix,我遇到了类似的问题。你能详细说明你的答案吗?我从 html 表单中获取输入并将其传递给 php/mysql 查询。因此,我将所有内容都包含在一个文件中。有没有更好的方法来处理这个?任何指向示例的链接都会有所帮助。谢谢
    • 伙计,你是一个品味。我希望我能 + 超过 1 个
    【解决方案4】:

    2020 年更新: 如果您使用的是 MVC 框架,则 url 不应该是 'index.php',而是使用完整目录:

     url: "http://localhost/mvc/controller/function/param1/param2",
    

    2019 年旧答案:

    就我而言,任何有相同问题的人都可以尝试使用

    require_once 而不是引导 php 文件中的 require,以防止整个页面在整个系统中第二次重新渲染。

    【讨论】:

      【解决方案5】:

      我刚刚从纯 JavaScript 迁移到 jQuery,因为,嗯,同行压力,发现它令人沮丧。特别是,从 Ajax POST 请求中获取整个 PHP 页面。在过去的两天里,当这种情况不断发生时,我已经多次阅读并重新阅读此页面。最后,在这两种情况下的问题是我要么在 Ajax 设置中拼写错误的 php url,要么将错误的路径放入文件

      有时最简单的小事会让你大吃一惊!

      我希望这可以节省一些时间......

      【讨论】:

        【解决方案6】:

        使用条件验证主页中的 $_POST 是否为空或 index.php 是否不发送整个页面以响应 ajax

        <?php 
        if(empty($_POST)){ ?>
        
        //
        <html>
        the header pages
        the body
        the include pages
        the scripts pages
        the footer
        <?php } ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-06
          • 1970-01-01
          • 2015-07-15
          相关资源
          最近更新 更多