如何从PHP(JSON)读取数组并通过JS填充少量输入

时间:2015-01-25 20:44:09

标签: javascript php jquery json

我正在构建小型网络应用,我想:

  • 从用户输入读取var
  • 当用户点击链接
  • 时,通过AJAX将此var传递给PHP
  • 接收数组(JSON)
  • 解析数组并将其填充为两个输入值

最后一次行动对我来说很难。

简单示例PHP:

<?php
$array = array("name" => "James", "surname" => "Bond");
echo json_encode($array);
?>

我的HTML就像:

    <script>
        $(document).ready(function(){
            $("#click_me").click(function(){
                $.post('127.0.0.1/read_from_php/', {
                    my_var : $("#my_var").val()
                }, function(data) {
                    //how to read and parse JSON from PHP here
                    //and put name and surname as a input value below:
                    $('#name').val(data);
                    $('#surname').val(data);
                });
            });
        });
    </script>

<input type="text" id="my_var" name="my_var" value="">
<a href="#" id="click_me">Click to read from PHP</a>

<div id="my_div">.. loading ..
   <input type="text" name="name"    id="name"    value="name"/>
   <input type="text" name="surname" id="surname" value="surname"/>
</div>

3 个答案:

答案 0 :(得分:1)

使用JSON.parse()将json字符串转换为对象:

<script>
    $(document).ready(function(){
        $("#click_me").click(function(){
            $.post('127.0.0.1/read_from_php/', {
                my_var : $("#my_var").val()
            }, function(data) {
                var person = JSON.parse(data);
                $('#name').val(person.name);
                $('#surname').val(person.surname);
            });
        });
    });
</script>

或者,也许您可​​以更改为$.getJSON(),因为它已经在内部处理解析。

答案 1 :(得分:0)

var obj = jQuery.parseJSON(json_data);

之后,您可以根据需要使用它。 obj.name,obj.surname

答案 2 :(得分:0)

  1. 使用PHP呈现JSON时设置正确的内容类型标题

    <?php
    $array = array("name" => "James", "surname" => "Bond");
    header('Content-Type: application/json');
    echo json_encode($array);
    ?>
    
  2. 将数据类型添加到jQuery.post调用,它将告诉jQuery在响应中期望JSON。这应该允许您直接访问数据对象而无需任何其他解码调用,请阅读此文档以获取更多信息http://api.jquery.com/jquery.post/

    <script>
        $(document).ready(function(){
            $("#click_me").click(function(){
                $.post(
                    '127.0.0.1/read_from_php/',
                    {
                        my_var : $("#my_var").val()
                    },
                    function(data) {
                        //how to read and parse JSON from PHP here
                        //and put name and surname as a input value below:
                        $('#name').val(data.name);
                        $('#surname').val(data.surname);
                    },
                    'json'
                );
            });
        });
    </script>