$ .ajax数据未将指定值发布到$ _POST

时间:2011-12-29 21:25:26

标签: php json jquery

好的,我在这里做错了什么? 我正在尝试使用JQuery $ .ajax函数从Form中获取数据并返回json数据。但每次帖子数据都为空。

这是HTML / JQuery Part

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
</head>

<body>
<form action="testform" method="post">
OLD ID:
<input id="OldID" name="OldID" type="text"><br>
NewID:
<input id="NewID" name="NewID" type="text"><br>

<input id="do" name="do" type="button" value="Get New ID">

</form>

<script type="text/javascript">

            var CID = $('#OldID').val();

        $(document).ready(function(){
                $('#do').click(function(){
                    sendValue();   
                }); 

        function sendValue(CID){

               $.ajax({
                  type: 'POST',
                  url: 'getNewID.php',
                  data: {OldID: CID},
                  dataType: 'json',
                  cache: false,
                  success:  
                    function(data){
                    $('#NewID').val(data.NewID);
                    }
              }) }
        });

</script>


</body>
</html>

这是PHP页面

<?php 

if (isset($_POST['OldID'])){

    $value = $_POST['OldID'];   

}else{
    $value = "ELSE VALUE";
}
echo json_encode(array("NewID"=>$value));  

?>

我确信这是一个简单的错误,但我现在只是在圈子里。

提前致谢!

2 个答案:

答案 0 :(得分:3)

            $('#do').click(function(){
                sendValue();   
            });

应该是:

            $('#do').click(function(){
                sendValue("VALUE TO SEND TO THE SERVER");   
            });

,因为

function sendValue(CID){

采用CID的范围,您认为应该是var CID = $('#OldID').val();

答案 1 :(得分:1)

您的错误是您在脚本中获取OldID字段的值,而不是某些事件处理程序方法。这会导致加载脚本时(正在查看页面时),文本输入的值保留在变量CID上。当用户点击#do按钮时,CID的值仍然与加载页面时的值相同。因此没有值存储在CID变量中,因此不会通过AJAX发送任何值。 定义另一个函数(Say sendOldID),它读取CID变量中输入的文本的值,然后使用CID参数调用sendValue()方法。使用该函数作为#do按钮的事件处理程序单击。

<script type="text/javascript">
    $(document).ready(function(){
            $('#do').click(function(){
                sendOldID();   
            });

    function sendOldID() {
        var CID = $('#OldID').val();
        sendValue(CID);
    }

    function sendValue(CID) {
           $.ajax({
              type: 'POST',
              url: 'getNewID.php',
              data: {OldID: CID},
              dataType: 'json',
              cache: false,
              success:  
                function(data){
                $('#NewID').val(data.NewID);
                }
          }) }
    });
</script>