在js中从php解析json

时间:2017-10-03 15:17:41

标签: javascript php arrays json ajax

我的php文件中有数组:

    $invoices_arr = [];

    foreach ($invoices as $key=>$invoice){
    $invoices_arr[$key]['id']=$invoice->get_id();
    $invoices_arr[$key]['code_text']=$invoice->get_code_text();
    $invoices_arr[$key]['invoice_name']=$invoice->get_invoice_name();
    $invoices_arr[$key]['status_invoice']=$invoice->get_status_invoice();
    $invoices_arr[$key]['attachments']=$invoice->get_attachments();
}
echo json_encode(['invoices'=>$invoices_arr]);

我的ajax电话:

 $.ajax({
                data:{lead_id:$("#lead_id").val()},
                url: sJSUrlGetAllLeadInvoices,
                success: function (data) {
                    var obj = jQuery.parseJSON(data);
                    $("#all_invoice_table tbody").empty();


                    $(obj.invoices).each(function(key,value){
                        $('#all_invoice_table').append('<tr><td>'+value.invoice_name+'</td><td class="invoice_status">'+value.status_invoice+'<td>attt</td><td><button id="'+value.id+'" class="edit_invoice_'+value.id+'">Edit invoice</button</td><td><button class="send_invoice_btn_'+value.id+'">Send invoice</button></td><td><img class="delete_invoice_'+value.id+'" src="/images/icons/delete.gif"></td><td class="invoice_hidden_column_'+value.id+'">'+value.code_text+'</td></tr>');
 });
   }
    });

在字段value.attachments中有php serialize数组,例如,string&#34; a:1:{i:0; s:36:&#34; ../../ pdf_invoices / 2017 -10-10015.pdf&#34 ;;}&#34; 。 如何在js中将此字符串转换为数组?

我尝试这样做:

       var mas=JSON.parse(value.attachments);

但是我收到错误 SyntaxError:JSON.parse:JSON数据第1行第1列的意外字符

我该如何解决?谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

也许你应该在json

中编码之前在PHP代码中反序列化

答案 1 :(得分:0)

您不需要使用jQuery.parseJSON解析结果,因为jQuery是这样做的。如果使用console.log()检查数据,您将看到这是一个可供使用的Javascript对象。

答案 2 :(得分:0)

您需要将数据类型作为json传递。 你可以使用jQuery parse方法来解析json响应。

  

数据类型:JSON