Php 如何从AJAX响应访问关联数组的成员
我有一个速记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) { $('
<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
字符串或普通字符串的情况。您的代码明确要求&expectedJSON
,这与普通字符串/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);
}
});
});