得到post jquery并在$ _POST中回显它(可能吗?)

时间:2015-02-13 19:05:38

标签: javascript php jquery html

我正在学习如何将数据发布到服务器。我想点击链接并将其数据发布到同一页面中的服务器,我是否需要有一个表单来执行此操作?是否可以在没有表格的情况下发布数据?我不能在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,只是这个

4 个答案:

答案 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)

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>

答案 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>