我正在学习如何将数据发布到服务器。我想点击链接并将其数据发布到同一页面中的服务器,我是否需要有一个表单来执行此操作?是否可以在没有表格的情况下发布数据?我不能在php中看到结果我是否有任何成功或完成功能在这里得到结果?我也尝试了Jquery manual的最后一个示例,并且没有内容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,只是这个
答案 0 :(得分:0)
使用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"];
答案 1 :(得分:0)
我想点击链接并将其数据发布到同一页面中的服务器,我是否需要有一个表单来执行此操作?
没有。您可以在没有表格的情况下发布数据。
修改强>
在编辑后回答问题(如果我理解的话):
对我来说,实际上看起来像是一个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{
// ...
}
}
答案 2 :(得分:-1)
访问$_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>
答案 3 :(得分:-1)
<?php
if(isset($_POST["name"])) {
echo $_POST["name"];
exit; //So we don't show the HTML in $.post response
}
?>
<!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").attr('data-value');
}).done(function(response) {
//Handle the response, just alerting for testing
alert(response);
});
//No need
//$('form#myform').submit();
//Event to see the response
});
});
</script>
</head>
<body>
<!--anchors don't have value attributes, use data- attribute-->
<a id="link" href="" data-value="A">Send</a>
</body>
</html>