如何从AJAX Response访问关联数组的成员

时间:2016-10-05 20:53:43

标签: php jquery json ajax

我有一个简短的ajax调用,它会在选择框更改时触发。

<script type'text/javascript'>
    $('#selection_project').change(function(event) {
        $.post('info.php', { selected: $('#selection_project option:selected').val()},
            function(data) {
                $('#CTN').html(data);
           }
       );            
   }); 
</script>

它可以工作,但服务器的响应是:

if (isset($_POST['selected']))
    $selected = $_POST['selected'];
    $results['selected'] = $selected;
    $response = json_encode($results);

    echo $response;

$ results是一个关联数组,包含SQL查询中的许多值。

我的问题是如何访问任何特定元素? 我尝试过像

这样的事情
data.selected

,或者

data['selected']

我也明白.post方法中的某处应该有一个定义替代dataType的语句,例如

'json', 

datatype: 'json',

但经过大量搜索后,我找不到一个例子可以提供在.post方法中使用替代数据类型的实际语法。 我本来应该使用.ajax方法,但拔出我的头发后,我无法弄清楚为什么那个不起作用,而.post是,所以我只是坚持下去。 如果有人能给我一点正确的方向,我会非常感激!!

编辑:这是我的.ajax尝试,无法弄清楚为什么它不起作用。也许我一直盯着它看太久了。

<script type'text/javascript'>

    $('#selection_project').change(function(event) {
        $.ajax({ 
            type: 'POST',
            url : 'pvnresult.php',
            data: { selected: $('#selection_project option:selected').val()},
            dataType: 'json',
            success: function(data){
                $('#CTN').html(data);
            }
        });
    });

</script>

2 个答案:

答案 0 :(得分:-1)

  

注意事项:在你的Javascript中,你正在做:

dataType: 'json', success: function(data){ $('#CTN').html(data); }

  

这意味着,您希望JSON数据 - 而不仅仅是HTML
现在,您可以在JSON中获取Javascript数据作为对象:

        success: function(data){
            if(data){
               // GET THAT selected KEY 
               // HOWEVER, BE AWARE THAT data.selected  
               // MAY CONTAIN OTHER DATA-STRUCTURES LIKE ARRAYS AND/OR OBJECTS
               // IN THAT CASE, TO GET THE EXACT DATA, YOU MAY JUST DO SOMETHING LIKE:
               // IF OBJECT: 
               // $('#CTN').html(data.selected.THE_KEY_YOU_WANT_HERE);
               // OR IF ARRAY:
               // $('#CTN').html(data.selected['THE_KEY_YOU_WANT_HERE']);   
               $('#CTN').html(data.selected);                 
            }
        }

答案 1 :(得分:-1)

尝试记录从info.php返回的内容。可能根本没有数据&amp;

$('#selection_project').change(function(event) {
    $.post('info.php', {
        selected: $('#selection_project option:selected').val()},
        function(data) {
            console.log(data);
            $('#CTN').html(data);
       }
   );            
}); 

---更新。对不起,我无法发表评论

你在使用之前用JSON.parse解析你的json:

$('#selection_project').change(function(event) {
    $.post('info.php', {
        selected: $('#selection_project option:selected').val()},
        success: function(data){
            var result = JSON.parse(data);
            $('#CTN').html(data);
        }
    });
});