【问题标题】:Why am i getting javascript and html code when using ajax to send and return value from php?为什么我在使用 ajax 从 php 发送和返回值时得到 javascript 和 html 代码?
【发布时间】:2013-07-24 13:34:58
【问题描述】:

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

example1.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 得到这个而不是 name 和 place 值?

【问题讨论】:

  • 你为什么用&lt;form action="?"编辑你的问题?操作字符是 >> ?
  • 在您编辑之后,问题变得令人困惑...您现在谈论多少个 php 文件?还有什么“example1.php 中的名称和位置值”?您删除了所有 php 代码...您能澄清一下吗?
  • @bfavaretto 只有一个文件。现在我在其中添加了 php 代码。我可以获得价值,但与客户端的整个代码一起
  • @Fred 我用过吗?向同一页面提交值
  • @bfavaretto 感谢您为使用提交功能提供的额外信息。很有帮助

标签: php javascript ajax jquery


【解决方案1】:

考虑到问题发生了变化,请更新

您将发布到表单所在的同一文件,因此您的响应包含该页面中的 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 的情况下提交。

【讨论】:

  • 似乎是对的,尽管它没有解释为什么警报会显示 example1.php 页面的全部内容。
  • 我很好奇。操作是否仍需要为 &lt;form action="response.php" method="post"&gt; 或者可以留空,因为它在 Ajax 内部?
  • @Barmar 我猜 example1.php 只是一个例子,在实际代码中它是算术.php
  • 同意这个答案,只是想增加一点改进。而是编写如下响应代码
  • @Fred 是的,如果您将其留空,它将假定它应该发布到当前页面。您应该采取额外的预防措施,以保证您始终使用 ajax 发布,我会更新答案。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 你的意思是像 10 分钟前 bfavaretto 的回答?
    • @bfavaretto 看起来像 “情节变厚”“原样”
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 2021-02-12
    • 2014-11-03
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多