jQuery Ajax 返回整个页面

问题描述 投票:0回答:6

我有一个 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);
    }
  });
});         
php jquery return-value
6个回答
42
投票

这就是它的工作原理。您通过 AJAX 请求

index.php
,因此您将获得
index.php
的所有内容。

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


14
投票

所以当你一开始就把这个放在

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 请求。如果您所做的不仅仅是输出接收到的值(即更复杂的操作),您无论如何都应该这样做。


7
投票

Sophia,就您而言,您不应将数据发送到 php 文件,该文件在通过网络浏览器查看时会显示网站页面。您应该将您的信息发送到一个 php 文件,该文件仅返回您希望返回的数据。

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


2
投票

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

有时,最简单的小事会让你绊倒!

我希望这能节省一些时间......


1
投票

2020 年更新: 如果您使用 MVC 框架,那么 url 不应该是“index.php”,而是使用完整目录:

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

2019 年旧答案:

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

在引导程序 php 文件中使用

require_once

 而不是 
require
,以防止整个页面在系统中第二次重新渲染。


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

<?php if(empty($_POST)){ ?> // <html> the header pages the body the include pages the scripts pages the footer <?php } ?>
    
© www.soinside.com 2019 - 2024. All rights reserved.