我正在学习如何将数据发布到服务器。我想点击一个链接并将其数据发布到同一页面中的服务器,我需要一个表格吗?可以在没有表格的情况下发布数据吗?我在php中看不到结果。我应该在这里获得任何成功或完成函数以获得结果吗?我也尝试过Jquery手册的最后一个例子,但没有内容div可以看到任何结果,所以我无法理解。
我不想显示数据并将其附加在html中,我想在$_POST中看到它,如果无法在同一页面中显示它,我可以接受,我只想看到$_POST可以从JQUERY 获得数据
<?php
if(isset($_POST["name"]))
echo $_POST["name"];
?>
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#link").click(function(){
$.post("newfile5.php",
{
name: $("#link").val()
}
});
$('form#myform').submit();
});
</script>
</head>
<body>
<form id="myform" action="newfile5.php" method="POST">
<a id="link" href="" value="A">Send</a>
</form>
</body>
</html>
PS:我更新了答案,但仍然没有结果:
<?php
if(isset($_POST["name"]))
echo $_POST["name"];
?>
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#link").click(function(e){
e.preventDefault();
$.post("newfile5.php",
{
name: $("#link").data("value")
},
function(data)
{
// Whatever is returned by newfile5.php
}
});
});
</script>
</head>
<body>
<a id="link" href="" data-value="A">Send</a>
</body>
</html>
我希望看到$_POST['name']具有值A,仅此
使用data-attr
存储数据。
<a id="link" href="" data-value="A">Send</a>
使用
console.log($("#link").data("value"));
所以你的代码变成
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#link").click(function(e){
$("#disp_name").html($("#link").data("value"));
e.preventDefault();
$.post("newfile5.php",
{
name: $("#link").data("value")
},
function(resp)
{
console.log(resp); // Whatever is returned by newfile5.php
}
});
});
</script>
</head>
<body>
<div id="disp_name"></div>
<form id="myform" action="newfile5.php" method="POST">
<a id="link" href="" data-value="A">Send</a>
</form>
</body>
</html>
并且不要使用$('form#myform').submit();
要在PHP中获取数据,请使用
$name = $_POST["name"];
我想点击一个链接并将其数据发布到同一页面中的服务器,我需要一个表格吗?
没有。你可以在没有表格的情况下发布数据。
编辑
编辑后回答问题(如果我很理解的话):
在我看来,这实际上像是一个X-Y问题,但答案是-否。
PHP无法干扰客户端浏览器。AJAX只是服务器(PHP)和已完全呈现的页面之间的"桥梁"。(您可能想了解WebSockets)
完全呈现的页面不再可以访问PHP变量(无论是jQuery还是任何其他客户端语言都无关紧要)。当与服务器的连接完成(页面完全呈现)时,所有PHP命名的变量和方法都不存在了。它们只能在页面呈现时设置(这是让这两种语言同时工作的唯一方法),例如:
<script>
var myData = "<?php echo 'something'; ?>";
</script>
基本上,$.post
用于与服务器进行通信。如果不需要,则可以访问页面本身中的数据,甚至不需要$.post
。
您有一个触发器事件(单击)。您设置事件以确定何时应该采取行动以及当时应该发生什么。无论是AJAX请求还是其他任何请求。
如果需要AJAX:
var myData = '';
$("#link").click(function(e){
$.post(
"newfile5.php",
{name: $("#link").attr('value')},
function( data ) {
myData = data;
doSomething();
// do something else with the data here. ...
}
);
});
如果不需要发布任何数据:
var myData;
$("#link").click(function(e){
myData = $("#link").attr('value');
doSomething();
});
方法:
function doSomething(){
if(myData){
alert(myData);
}else{
// ...
}
}
在php中访问$_POST
变量
编辑:
首先,你把两种不同的方式结合在一起,同时又做错了。您正在发出一个AJAX请求,然后发送一个没有值的普通HTTP请求。这两个错误,试试这个例子,它会发出一个Ajax Post Request,并在Alert中向您显示结果。
<?php
if(isset($_POST["name"]))
echo $_POST["name"];
?>
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#link").click(function(){
$.post("newfile5.php",
{
name: 'Some Name'
}, function(data) {
alert(data)
}
});
});
</script>
</head>
<body>
<form id="myform" action="newfile5.php" method="POST">
<a id="link" href="" value="A">Send</a>
</form>
</body>
</html>