Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从AJAX响应访问关联数组的成员_Php_Jquery_Json_Ajax - Fatal编程技术网

Php 如何从AJAX响应访问关联数组的成员

Php 如何从AJAX响应访问关联数组的成员,php,jquery,json,ajax,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) { $('

我有一个速记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>
$results是一个关联数组,包含来自SQL查询的许多值

我的问题是如何访问任何特定元素? 我试过这样的方法

data.selected
或者

我还知道.post方法中的某个地方应该有一个语句定义替代数据类型,例如

'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>

$(“#选择项目”)。更改(功能(事件){
$.ajax({
键入:“POST”,
url:'pvnresult.php',
数据:{selected:$('#selection_项目选项:selected').val(),
数据类型:“json”,
成功:功能(数据){
$('#CTN').html(数据);
}
});
});
请注意:在Javascript中,您执行了以下操作:

dataType:'json',
成功:功能(数据){
$('#CTN').html(数据);
}

这意味着,您需要的是
JSON
数据,而不仅仅是普通的
HTML

现在,要将
JSON
数据作为
Javascript
中的对象,您可以执行以下操作:


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

$('#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);
        }
    });
});

包含所有数据的整个数组显示在#CTN元素中。@LoganVoss by array,您是说object吗?php json编码的关联数组将成为js中的对象。至少,以你在问题中提出的形式。@KevinB是的,显示的基本上是{“0”:{“Project\u ID”:“1”,“Global\u Project\u Number”:“99999”,等等。直到我在末尾添加了“selected”。是的,这是一个对象,带有
“0”
键。
foo[“0”].Project_ID
我明白了!还要感谢@kevinB,这个答案和您的帮助的组合修复了它!我做了JSON.PARSE并解决了它。再次感谢!你是什么意思?我想.html与更改element@LoganVoss是的,您使用
.html()
更改JQuery中任何DOM对象的innerHTML,但这仅适用于需要
HTML
字符串或普通字符串的情况。您的代码明确要求&expected
JSON
,这与普通字符串/HTML不同,因此不会像您预期的那样运行。
<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>
        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);                 
            }
        }
$('#selection_project').change(function(event) {
    $.post('info.php', {
        selected: $('#selection_project option:selected').val()},
        function(data) {
            console.log(data);
            $('#CTN').html(data);
       }
   );            
}); 
$('#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);
        }
    });
});