PHP 不捕获由 ajax jquery 在同一页面上发送的 $_POST 数据
Posted
技术标签:
【中文标题】PHP 不捕获由 ajax jquery 在同一页面上发送的 $_POST 数据【英文标题】:PHP not capture $_POST data send by ajax jquery on same page 【发布时间】:2015-03-22 10:41:50 【问题描述】:我正在使用 ajax 在同一页面上发布数据,并尝试使用以下脚本用 php 回显发布的数据。
$('button').click(function()
$.ajax(
type: "post",
data: $("form").serialize(),
beforeSend: function(),
success: function(data)alert(data),
error: function(err) alert(err.responseText);
)
)
而php脚本是:
<?php echo isset($_POST['data']) ? $_POST['data'] :''; ?>
我的 html 是:
<form>
<input type="hidden" name="data" value="to_success"/>
<button type="button">Click Me</button>
</form>
我的问题是 php 不会在页面上回显已发布的数据,但是当我将表单数据发布到另一个相同 php 脚本的 php 文件上时; php 能够回显发布的数据,而 ajax 对此很警惕。请帮我解决这个问题。谢谢
【问题讨论】:
url
参数应默认为当前 URI,但请尝试明确设置。
当然,还要注意浏览器的网络控制台,以验证请求正在发送并发送到正确的路径。
感谢@Michael Berkowski。我的 url 参数是正确的。对于同一页面,我没有使用 url 参数。对于另一个 php 文件,我使用了正确的 url
请说明您使用的是 GET 还是 POST。您的标题与您的代码不匹配,
这是包含所有这些代码的单个 PHP 文件吗?如果是这样,您的页面将不会回显 POST 变量,因为当您加载页面时它没有被发布到,如果它完全有效,它将返回整个页面及其 HTML 到 ajax 成功警报,如果它可能不起作用无法解释返回值。
【参考方案1】:
如果不将整个 PHP 页面视为一个列表,很难判断,但从您的描述看来,您的问题可能是因为您声明 .click()
事件的方式或您发布到页面的方式。前者的可能性更大。
$.ajax()
请求将使用 XMLHttpRequest 对象 POST 到您的 PHP 脚本。然后,PHP 脚本应该获取这些值,并从脚本中的纯文本和插入的回显值的组合中生成返回字符串。然后,success
方法的回调函数应该会接收到它,并在警报框中以 HTML 文本块的形式向您的页面发出警报。
确实,如果我使用以下代码,就会发生这种情况:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
$(document).ready(function()
$('button').click(function()
$.ajax(
type: "post",
data: $("form").serialize(),
beforeSend: function() ,
success: function(data)
alert(data);
,
error: function(err)
alert(err.responseText);
);
);
);
</script>
</head>
<body>
<?php echo isset($_POST['data']) ? $_POST['data'] :''; ?>
<form>
<input type="hidden" name="data" value="to_success"/>
<button type="button">Click Me</button>
</form>
</body>
</html>
但是,如果我注释掉 $(document).ready(function()
的行及其对应的结尾 );
,那么当我单击时不会发生任何事情。
因此,请尝试将您的 .click()
事件定义包装在 $(document).ready()
中。
【讨论】:
以上是关于PHP 不捕获由 ajax jquery 在同一页面上发送的 $_POST 数据的主要内容,如果未能解决你的问题,请参考以下文章
(进阶篇)jQuery+Ajax+PHP+Mysql实现分页显示数据