douqiang5163 2016-12-18 17:51
浏览 95
已采纳

为什么我无法访问JSON中的数据?

My PHP is:

if(!empty($_POST)&&($_POST['action']=='edit'))
{
    foreach ($_POST['selected'] as $edit_id) 
    {
        $query = "SELECT * FROM grocery WHERE id = $edit_id";
        $result = dbQuery($query);
        break;
    }

    $rowArr=array();
    $inRow = mysqli_fetch_array($result);

    $id = $inRow['id'];
    $shop = $inRow['shop'];
    $category = $inRow['category'];
    $item = $inRow['item'];
    $qnty = $inRow['quantity'];
    $unit = $inRow['unit'];
    $price_based_on = $inRow['price_based_on'];
    $mrp = $inRow['MRP'];
    $sellers_price = $inRow['sellers_price'];
    $last_updated_on = $inRow['last_updated_on'];
    array_push($rowArr, array('id' => $id, 'shop' => $shop, 'category' =>$category, 'item' => $item, 'qnty' => $qnty, 'unit' => $unit, 'price_based_on' => $price_based_on, 'mrp' => $mrp, 'sellers_price' => $sellers_price, 'last_updated_on' => $last_updated_on));  
    echo json_encode(array('rowArr' => $rowArr));
}

The output (JSON) produced by the above script is: (I've ensured this is produced in the Chrome's console)

{
  "rowArr": [
    {
      "id": "30",
      "shop": "Subhash",
      "category": "Spices",
      "item": "Duta Corriander Powder",
      "qnty": "50",
      "unit": "gm",
      "price_based_on": "Packet",
      "mrp": "15.00",
      "sellers_price": "12.00",
      "last_updated_on": "2016-12-03"
    }
  ]
}

My jQuery is:

$('#edit').click(function(){
    var data = $("#list :input").serialize();
    $.post($("#list").attr('action'), data, function(json) 
    {
        if(json.rowArr.length>0)
            console.log("Data Exists");
        else
            console.log("Empty");
        currentRow = json.rowArr[0];
        console.log(json.rowArr[0].id);
        $("#id").val(currentRow.id);
        $("#id_disp").val(currentRow.id);
    });
});

Strangely enough, neither Data Exists or Empty is produced by the above loop. And when I try to access the JSON data, json.rowArr[0].id I get the following error:

Uncaught TypeError: Cannot read property 'length' of undefined

Why is this happening? How do I fix it?

  • 写回答

1条回答 默认 最新

  • doupu3211 2016-12-18 18:07
    关注

    You should explicitly tell jQuery that your response has JSON format. You should pass 'json' as fourth argument of $.post, according to docs.

    $('#edit').click(function(){
        var data = $("#list :input").serialize();
        $.post($("#list").attr('action'), data, function(json) {
            if(json.rowArr.length>0)
                console.log("Data Exists");
            else
                console.log("Empty");
            currentRow = json.rowArr[0];
            console.log(json.rowArr[0].id);
            $("#id").val(currentRow.id);
            $("#id_disp").val(currentRow.id);
        }, 'json');
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)