为什么我在使用ajax从php发送和返回值时会得到javascript和html代码


Why am i getting javascript and html code when using ajax to send and return value from php?

今天我用下面的代码试用了Ajax。逻辑似乎是正确的,因为成功函数正在触发,但我无法从php文件中获得返回值,相反,当我提醒响应时,我会得到Javascript和html代码。

示例1.php

 <?php
    echo $_POST['name'];
 ?>
<form action="?" method="post">
<input type="text" id="d1" name="name" value="">
<input type="text" id="d2" name="place" value="">
<input id="target" type="submit" name="submit" value="send">
</form> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#target").click(function()
{
var data1=$("#d1").val();
var data2=$("#d2").val();
$.ajax
({
type:"POST",
url:"example1.php",
data:{name:data1,place:data2},
success:function(msg)
{
alert(msg);
}
});
return false;
});
});
</script>

当我运行example1.php时,它显示如下所示的警告消息提交名称

<form action="?" method="post">
<input type="text" id="d1" name="name" value="">
<input type="text" id="d2" name="place" value="">
<input id="target" type="submit" name="submit" value="send">
</form> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#target").click(function()
{
var data1=$("#d1").val();
var data2=$("#d2").val();
$.ajax
({
type:"POST",
url:"arithmetic.php",
data:{name:data1,place:data2},
success:function(msg)
{
alert(msg);
}
});
return false;
});
});
</script>

为什么我从example1.php中得到这个而不是名称和位置值?

考虑到问题已更改,请更新

您正在将邮件发送到表单所在的同一个文件,因此您的响应包括该页面中的HTML代码。您必须发布到另一个只响应您想要的内容的PHP文件,或者如果发布了一些数据,则更改当前文件以做出不同的响应。


您的ajax请求不会发送到response.php,因为您告诉jQuery发布到不同的URL:

url:"arithmetic.php",

将其更改为response.hp.


为了保证您始终使用ajax发布,您应该绑定到表单的submit事件,而不是单击提交按钮:

$('form').submit(function(e) {
    // ajax stuff
    // prevent default (submit)
    return false;
});

对于您当前的代码,如果您在关注其中一个输入字段时点击回车键,表单将在不使用ajax的情况下提交。

将url更改为url:"response.php"

并在response.php中编写类似的代码

$name=$_POST["name"];
$place=$_POST["place"];

按如下方式更改响应代码。您需要在编写响应后停止执行。

<?php 
if(isset($_POST['name'])) {
echo $_POST['name']; 
echo $_POST['place']; 
exit(0); 
} 
?>