0

今天我用下面的代码尝试了 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 得到这个而不是名称和位置值?

4

3 回答 3

4

更新考虑到问题改变了

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


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

url:"arithmetic.php",

将其更改为 response.php。


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

$('form').submit(function(e) {

    // ajax stuff

    // prevent default (submit)
    return false;
});

使用您当前的代码,如果您在专注于其中一个输入字段时按 Enter 键,则表单将在没有 ajax 的情况下提交。

于 2013-07-24T13:36:42.753 回答
1

如下更改您的响应代码。您需要在写完回复后停止执行。

<?php 
if(isset($_POST['name'])) {
echo $_POST['name']; 
echo $_POST['place']; 
exit(0); 
} 
?> 
于 2013-07-24T14:00:20.747 回答
0

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

并像这样在responce.php中编写代码

$name=$_POST["name"];
$place=$_POST["place"];
于 2013-07-24T13:48:26.447 回答