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

最初に、JSON オブジェクトを取得しているか、サーバーがデータを送信しているかにかかわらず、firebug を使用してデバッグします。次に、の代わりに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」属性を使用して、JSON オブジェクトを取得することを AJAX に通知します
于 2013-09-12T04:00:18.413 に答える