Javascript 我得到';未定义';访问json数组位置时
我在php中获得db查询的结果,并通过json数组中的ajax返回结果,但当我尝试访问数据时,它会将数据作为“未定义”返回 为什么会这样 以下是我的php代码:Javascript 我得到';未定义';访问json数组位置时,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我在php中获得db查询的结果,并通过json数组中的ajax返回结果,但当我尝试访问数据时,它会将数据作为“未定义”返回 为什么会这样 以下是我的php代码: <?php $tipo_prod= $_POST['tipo_prod']; $conn = oci_connect("admin", "admin", "localhost/XE"); $query = "SELECT COD_PRODUCTO, NOMBRE FROM PRODUCTO WHERE CO
<?php
$tipo_prod= $_POST['tipo_prod'];
$conn = oci_connect("admin", "admin", "localhost/XE");
$query = "SELECT COD_PRODUCTO, NOMBRE FROM PRODUCTO WHERE COD_TIPO_PROD=" . $tipo_prod;
$exec= oci_parse($conn, $query);
oci_execute($exec);
//Check connection!!!
$exec= oci_fetch_array($exec);
echo json_encode($exec);
?>
还有我的ajax代码:
$.ajax({
url : "trae_producto.php",
type : "POST",
data: {"tipo_prod" : tipo_prod},
success : function(data){
data = JSON.stringify(data);
$.each(data, function(index, value){
$('#producto').append("<option value='" + value.COD_PRODUCTO + "'>" + value.NOMBRE + "</option>");
});
}});
$.ajax({
url:“trae_producto.php”,
类型:“POST”,
数据:{“tipo_prod”:tipo_prod},
成功:功能(数据){
data=JSON.stringify(数据);
$.each(数据、函数(索引、值){
$('#producto')。追加(“+value.NOMBRE+”);
});
}});
试着做:
$.ajax({
url : "trae_producto.php",
type : "POST",
data: {"tipo_prod" : tipo_prod},
dataType: "json",
success : function(data){
$.each(data, function(index, value){
$('#producto').append("<option value='" + value.COD_PRODUCTO + "'>" + value.NOMBRE + "</option>");
});
}});
增加:
做点像
while($data = oci_fetch_array($exec)) {
$out[] = $data;
}
echo json_encode($out);
$.ajax({
url:“trae_producto.php”,
类型:“POST”,
数据类型:“json”,
数据:{“tipo_prod”:tipo_prod},
成功:功能(数据){
/*data=JSON.stringify(数据)*/
$.each(数据、函数(索引、值){
$('#producto')。追加(“+value.NOMBRE+”);
});
}});
我不知道PHP脚本的实际回报是什么,但如果假设它是正确的,AJAX似乎有一些缺陷
您正在尝试将它提供的结果转换为JSON。jQuery已经为您解析了它,只需删除JSON.stringify的行
$.ajax({
url : "trae_producto.php",
type : "POST",
data: {"tipo_prod" : tipo_prod},
success : function(data){
$.each(data, function(index, value){
$('#producto').append("<option value='" + value.COD_PRODUCTO + "'>" + value.NOMBRE + "</option>");
});
}
});
$.ajax({
url:“trae_producto.php”,
类型:“POST”,
数据:{“tipo_prod”:tipo_prod},
成功:功能(数据){
$.each(数据、函数(索引、值){
$('#producto')。追加(“+value.NOMBRE+”);
});
}
});
首先,通过firebug调试您是否正在获取JSON对象,以及您的服务器是否正在发送数据。然后,代替data=JSON.stringify(数据)
,可以使用data=JSON.parse(data)代码>作为第一步,使用浏览器网络选项卡或通过在控制台的成功手柄中记录数据的值来检查从服务器返回的值。我尝试了它,但它没有向我发送任何信息,即使我使用console.log()@montjoile,你对console.log(data)看到了什么。。。?我使用:console.log(数据[0].NOMBRE);超出$each和console.log(value.NOMBRE);在$each中,并且在console@montjoile尝试只执行console.log(数据);在你的每一美元之前。。看看你能得到什么data@montjoile请参阅添加的答案,并验证您是否在PHP端的$exec变量中实际获得了结果。。!它告诉我:“TypeError:invalid'in'操作数e”
$.ajax({
url : "trae_producto.php",
type : "POST",
dataType: "json",
data: {"tipo_prod" : tipo_prod},
success : function(data){
/* data = JSON.stringify(data); */
$.each(data, function(index, value){
$('#producto').append("<option value='" + value.COD_PRODUCTO + "'>" + value.NOMBRE + "</option>");
});
}});
$.ajax({
url : "trae_producto.php",
type : "POST",
data: {"tipo_prod" : tipo_prod},
success : function(data){
$.each(data, function(index, value){
$('#producto').append("<option value='" + value.COD_PRODUCTO + "'>" + value.NOMBRE + "</option>");
});
}
});