我有一个简短的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>
答案 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);
}
});
});