jQuery Ajax返回整个页面

时间:2010-04-06 15:48:51

标签: php jquery return-value

我有一个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);
    }
  });
});         

6 个答案:

答案 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 } ?>