【发布时间】:2016-01-25 09:53:04
【问题描述】:
我正在尝试在 PHP 中使用$.ajax 使用echo $_POST,但没有成功。在 Xdebug 中,我看到 $_POST 获得了正确的值并执行了 echo $_POST 行,但我不断收到 else 输出子句。同样在 chrome 中,我看到发送的标题有效。所有代码都在同一个页面 index.php 中。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.post demo</title>
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
</head>
<body>
<button type="button" id="but">Click Me!</button>
<script>
$('#but').click(function() {
$.ajax({
type: "POST",
url: "index.php",
data: {name: "John"},
success: function() {
alert('success');
}
});
});
</script>
</body>
</html>
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
echo $_POST['name'];
} else {
echo "Nothing to Show";
}
?>
【问题讨论】:
-
index.php 和 HTML 脚本是否在同一个文件中?
-
把PHP代码放到自己的页面中。
-
@wizard 当您在 ajax 中调用 index.php 时,它将返回顶部的所有 HTML 代码。最好把php放到一个单独的文件里调用。
-
要添加到上述 cmets,您不会在 ajax 调用中对 php 脚本的输出做任何事情,因此您只会看到您的
success警报。而当你重新加载页面时,它又会是一个 GET 请求。如果您在succes函数中显示返回值,您将看到页面的完整 html 源代码,末尾带有文本John。 -
@wizard 显然你关心返回值,否则就没有理由
echo任何东西。