获取post-jquery并在$_post中回显它(这可能吗?)


get post jquery and echo it in $_POST(is that possible?)

我正在学习如何将数据发布到服务器。我想点击一个链接并将其数据发布到同一页面中的服务器,我需要一个表格吗?可以在没有表格的情况下发布数据吗?我在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>