我有一个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);
}
});
});
答案 0 :(得分:36)
这就是它的工作原理。您通过AJAX请求index.php
,因此您将获得index.php
的所有内容。
如果您想要一个特定的值,请创建一个只输出该值的新PHP页面,然后请求该URL的内容。
答案 1 :(得分:11)
所以当你在index.php
开头有这个时:?
<?php
if (isset($_POST["testAjax"])) {
echo $_POST["testAjax"];
}
?>
如果此脚本正在输出更多文本,那么当然这也将通过Ajax调用接收。您可以在回显之后放置exit()
以防止脚本被进一步处理:
if (isset($_POST["testAjax"])) {
echo $_POST["testAjax"];
exit();
}
同样使用dataType: 'text'
,因为您返回的值显然不是HTML。
或者像其他人建议的那样,创建一个负责处理Ajax请求的新页面。如果您所做的不仅仅是输出接收到的值(即更复杂的操作),那么无论如何都应该这样做。
答案 2 :(得分:6)
Sophia,在您的情况下,您不应将数据发送到php文件,如果通过Web浏览器查看,则显示网站页面。您应该将您的信息发送到一个php文件,该文件只返回您希望返回的数据。
因此,不要使用“index.php”,而是创建一个名为“my-ajax-script.php”的文件。该文件应包含任何必要的“include()”文件以连接到数据库和您的php函数文件(即:用于清理POST数据)。然后该文件应具有处理POST数据的代码,并使用一些html标记回显出数据。此数据将插入到您现有的DOM(html标记)中。
答案 3 :(得分:0)
2020年更新: 如果您使用的是MVC框架,则网址不应为“ index.php”,而应使用完整目录:
drones
旧答案2019:
对于我来说,有相同问题的任何人都可以尝试使用
$semana = ["Monday", "Tuesday", "Tuesday"]
$ano = 2020;
$mes = 2;
$from = new DateTimeImmutable("$ano-mes");
$to = $from->modify('last day of this month');
$datePeriod = new DatePeriod($from, DateInterval::createFromDateString('1 day'), $to);
$dates = iterator_to_array($datePeriod);
$filtered2 = array_filter($dates, function (DateTimeImmutable $day) use ($obrigatorio, $feriados, $semana) {
if (in_array($day->format('l'), $semana)) {
return true;
}
});
而不是靴子php文件中的 url: "http://localhost/mvc/controller/function/param1/param2",
,以防止整个系统第二次重新呈现整个页面。
答案 4 :(得分:0)
由于同行压力,我一直在从纯JavaScript过渡到jQuery,并发现它令人沮丧。特别是从Ajax POST请求获取整个PHP页面。在过去的两天内,我已经多次阅读并重新阅读此页面。最后,在两种情况下,我都会在Ajax设置中将php url拼写错误或在文件中放置错误的路径。
有时候这是让您绊倒的最简单的小事!
我希望这可以节省一些时间...
答案 5 :(得分:0)
使用条件来验证$ _POST在您的主页或index.php中是否为空以不发送整个页面作为响应ajax
<?php
if(empty($_POST)){ ?>
//
<html>
the header pages
the body
the include pages
the scripts pages
the footer
<?php } ?>