0

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

这是我的php代码:

<?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>"); 
    });
}});
4

4 回答 4

0

首先,通过firebug调试你是否得到一个JSON对象,以及你的服务器是否正在发送数据。然后,data = JSON.stringify(data);您可以使用data = JSON.parse(data);

于 2013-09-12T04:38:59.493 回答
0

尝试做::

$.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 代码中添加 Content-Type 标头,例如:

header('Content-Type: application/json');
echo json_encode($exec);

补充:做类似的事情

while($data = oci_fetch_array($exec)) {
 $out[] = $data;
}
echo json_encode($out);
于 2013-09-12T03:59:43.470 回答
0
$.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 对象
于 2013-09-12T04:00:18.413 回答
0

您正在尝试将它给您的结果转换为 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>"); 
        });
     }
 });
于 2013-09-12T04:00:36.230 回答