我有一个 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);
}
});
});
这就是它的工作原理。您通过 AJAX 请求
index.php
,因此您将获得 index.php
的所有内容。
如果您想要特定值,请创建一个仅输出该值的新 PHP 页面,然后请求该 URL 的内容。
所以当你一开始就把这个放在
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 请求。如果您所做的不仅仅是输出接收到的值(即更复杂的操作),您无论如何都应该这样做。
Sophia,就您而言,您不应将数据发送到 php 文件,该文件在通过网络浏览器查看时会显示网站页面。您应该将您的信息发送到一个 php 文件,该文件仅返回您希望返回的数据。
因此,创建一个名为“my-ajax-script.php”的文件,而不是“index.php”。该文件应包含任何必要的“include()”文件以连接到数据库和您的 php 函数文件(即:用于清理 POST 数据)。然后该文件应该包含处理 POST 数据的代码,并回显带有一些 html 标记的完整数据。该数据将被插入到您现有的 DOM(html 标记)中。
由于同行压力,我刚刚从纯 JavaScript 转向 jQuery,并且发现这令人沮丧。 特别是,从 Ajax POST 请求中获取整个 PHP 页面。 在过去的两天里,当这种情况不断发生时,我已经多次阅读并重新阅读了此页面。 最后,这两种情况下的问题是我要么在 Ajax 设置中将 php url 拼写错误,要么将错误的路径放入文件。
有时,最简单的小事会让你绊倒!我希望这能节省一些时间......
2020 年更新: 如果您使用 MVC 框架,那么 url 不应该是“index.php”,而是使用完整目录:
url: "http://localhost/mvc/controller/function/param1/param2",
2019 年旧答案:
就我而言,任何有同样问题的人都可以尝试使用在引导程序 php 文件中使用
require_once
而不是
require
,以防止整个页面在系统中第二次重新渲染。
<?php
if(empty($_POST)){ ?>
//
<html>
the header pages
the body
the include pages
the scripts pages
the footer
<?php } ?>