在PHP中获取未定义的索引错误

时间:2013-12-27 01:13:11

标签: javascript php jquery

我只想接收数组并打印由jquery.post()

发送的数据

我的HTML-JS

<input type="submit"  id="myButton" />

<script type="text/javascript">

    var arr = new Array();
    arr[0] = "Ding";
    arr[1] = "Dong";
    arr[2] = "Bong";

    var json_string= JSON.stringify(arr); // convert it into a json string. 

    //and sending the data to server. temp.php.
    $("#myButton").click(function(){
    $.post('temp.php' , {json : json_string },function(data){

                       location.href = "temp.php";
         }); 

    });

</script>

我已alert()检查数据发送是否成功。按钮点击页面也会重定向到temp.php

我的php页面temp.php

<?php
    $json_string = $_POST['json']; //geting the post request. //this is line 3
    $array_items = json_decode($json_string); //converting json string to a php array.
    echo $array_items[0]; //just to print 1st element of array
 ?>

应打印Ding。但是我收到了错误

Undefined index: json in C:\wamp\www\phpJSarray\temp.php on line 3

我在temp.php页面中的错误是什么?请帮帮我。

4 个答案:

答案 0 :(得分:4)

在您的onclick或表单提交上调用此javascript但是你喜欢。

var arr = new Array();
arr[0] = "Ding";
arr[1] = "Dong";
arr[2] = "Bong";

var json_string = JSON.stringify(arr); // convert it into a json string.
$("#data").val(json_string);    
$("#form1").submit(); //and sending the data to server. temp.php.

HTML:

<form action="temp.php" id="form1" method="POST">
    <input type="hidden" id="data" name="data">
</form>

temp.php

$dataArray = json_decode($_POST['data']);

答案 1 :(得分:2)

<script>

$(document).ready(function() {    
   $("#myButton").on( 'click', function () {
    $.ajax({
        type: 'post',
        url: 'temp.php',
        data: {
            arr1: "Ding",
            arr2: "Dong",
            arr3: "Bong",
        },
        success: function( data ) {
            console.log( data );
        }
    });
});
});

</script>

然后你可以通过$_POST['arr1'];来调用它。我希望这能解决你的问题。

答案 2 :(得分:2)

$ .post正在当前页面上进行AJAX调用...这没有明显的效果,因为一旦完成,location.href = "temp.php";会将你重定向到temp.php。

如果您想对temp.php发布POST,您可以通过普通表单进行操作。如果需要,使用jQuery将隐藏的输入元素的值设置为json_string(或者更好的是,让jQuery将表单数据更改为JSON)。

答案 3 :(得分:0)

通过AJAX将数据发送到temp.php并返回成功的响应后,重定向到temp.php并发生空POST。这就是重定向后没有数据的原因。

您还应该检查temp.php中是否存在数组元素:

<?php

    if (isset($_POST['json'])) {
        $json_string = $_POST['json']; 
        $array_items = json_decode($json_string); 
        echo $array_items[0]; 
    }

?>