首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当访问json数组位置时,我会得到“未定义”。

当访问json数组位置时,我会得到“未定义”。
EN

Stack Overflow用户
提问于 2013-09-12 03:51:31
回答 3查看 1.3K关注 0票数 0

我在php中获取db查询的结果,并通过json数组中的ajax返回它,但是当我试图访问数据时,它给我的数据是“未定义的”,为什么会发生这种情况呢?

以下是我的php代码:

代码语言:javascript
复制
<?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代码:

代码语言:javascript
复制
$.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>"); 
    });
}});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-12 03:59:43

试着做:

代码语言:javascript
复制
$.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>"); 
    });
}});

尝试在PHP代码中添加内容类型标头,如:

代码语言:javascript
复制
header('Content-Type: application/json');
echo json_encode($exec);

补充道:做一些类似的事情

代码语言:javascript
复制
while($data = oci_fetch_array($exec)) {
 $out[] = $data;
}
echo json_encode($out);
票数 0
EN

Stack Overflow用户

发布于 2013-09-12 04:00:18

代码语言:javascript
复制
$.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>"); 
    });
}});

我不知道PHP脚本的真正回报是什么,但是如果假设它是正确的,那么AJAX似乎有一些缺陷。

  1. JSON.stringify将使您的对象成为字符串类型,这样jQuery迭代器就无法工作。
  2. 使用"dataType“属性通知AJAX它将获得JSON对象
票数 0
EN

Stack Overflow用户

发布于 2013-09-12 04:00:36

您正在尝试将它提供给您的结果转换为JSON。jQuery已经为您解析了它,只需删除JSON.stringify的行即可。

代码语言:javascript
复制
 $.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>"); 
        });
     }
 });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18755036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档