【问题标题】:how to solved json.parse when data is empty in ajax当ajax中的数据为空时如何解决json.parse
【发布时间】:2021-05-12 06:11:00
【问题描述】:

我按照此代码在表格中显示我的数据,但是当数据为空时此代码错误,“错误 JSON.parse:第 1 行的意外字符”。请..帮助我如何解决这个问题,我想在json数据为空时发出警报

$('#pilih').click(function(){
        const unit = document.getElementById('unit').value;
        const nosam = document.getElementById('nosam').value;
$.ajax({
            url: 'get/penjualan_data.php',
            data: {'unit': unit, 'nosam': nosam},
            cache: false,
        }).then(function(data){
            const json = data;
            obj = JSON.parse(json);
            
    var $table = $('#tampilkan tbody');
    for (var i = 0; i < obj.length; i++) {
    const a = i+1;
            var $row = 
                $("<tr>" +
        "<td>"+ a +"</td>" +
        "<td><input type='checkbox'></td>" +
                  "<td class='id'>"+ obj[i].nosam +"/"+ obj[i].gol +"</td>" +
        "<td>"+ obj[i].unit +"</td>" +
                  "<td class='nama'>"+ obj[i].nama +"</td>" +
        "<td>"+ obj[i].alamat +"</td>" +
                  "<td>"+ blnIndo(parseInt(obj[i].bulan)) +" "+ obj[i].tahun +"</td>" +
        "<td>"+  +"</td>" +
                  "<td style='text-align: right;' class='rp'>"+ titikAngka(obj[i].rupiah) +"</td>" +
                  "</tr>");
      
             $row.data(obj.nosam);
             $row.data(obj.nama);
             $row.data(obj.rupiah);
             $table.append($row);
   });
  });

【问题讨论】:

标签: jquery json ajax


【解决方案1】:

作为第一次尝试,您可以简单地检查您的 json 数据是否为空。

if (json)
  obj = JSON.parse(json);

如果您的代码仍然可以获取带有无效 json 的输入,请使用 try-catch。

try {
 obj = JSON.parse(json);
}
catch(e) {
   console.log(e)
}

【讨论】:

  • 谢谢你,我试试.. 我希望这能解决我的问题
【解决方案2】:

如果请求没有返回数据,则显示警报、空表或替代布局。

 if(!data) { alert('sorry, no data was retrieved'); return; }

【讨论】:

    【解决方案3】:

    如果没有要显示的数据,请确保您的 php 脚本 penjualan_data.php 输出 {}。您的错误是您没有在响应中收到正确的 JSON 对象。

    所以即使$data=""; 还是以echo json_encode($data);结束

    【讨论】:

    • 这就是问题所在,所以..我该如何解决这个问题,我想当 penjualan_data 中的数据为空时显示警报在搜索中找不到数据
    • 刚刚更新了我的回复 - 不确定这是否是您要问的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2021-08-17
    • 2021-11-18
    • 2022-09-26
    • 2022-11-15
    相关资源
    最近更新 更多