jQuery Ajax 调用返回 JSON 字符串而不是对象数组

Posted

技术标签:

【中文标题】jQuery Ajax 调用返回 JSON 字符串而不是对象数组【英文标题】:jQuery Ajax call returning JSON string not as object array 【发布时间】:2019-10-05 18:36:51 【问题描述】:

我正在从数据库中获取数据并将 ASP.NET MVC 视图页面中的数据显示为表格格式。下面是 Ajax 调用。我将返回数据作为 JSON 字符串获取。我不确定为什么。对于所有视图页面,我都以 JSON 对象的形式获取。

虽然值在 JSON 字符串中,但我正在尝试使用“JSON.parse(jsonData)”转换为 JSON 对象。它在我当地运行良好。当我在 Stage 中部署代码时。线路在 Json Parse 中断。

为什么我会收到此错误。代码中有什么工作吗?

JSON 字符串:

["SuppNum":null,"Documentumid":"090111738011c814:Supplier Needful Info.xlsx:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","DocDescription":"Paper Agreement","CreateDate":"05/11/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"40","AttachmentFilename":"Supplier Needful Info","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"PII Paper Agreement                               ","ContentType":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","SuppNum":null,"Documentumid":"090111738011c2c2:WP_SQL_Query1.pdf:application/pdf","DocDescription":"Expense Report","CreateDate":"05/14/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"27","AttachmentFilename":"WP_SQL_Query1","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"Expense                                           ","ContentType":"application/pdf","SuppNum":null,"Documentumid":"090111738011c2cc:UiPath-Level1_Certificate.pdf:applicat    ion/pdf","DocDescription":"Paper DOC","CreateDate":"05/14/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"40","AttachmentFilename":"UiPath-Level1_Certificate","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"PII Paper Agreement                               ","ContentType":"application/pdf","SuppNum":null,"Documentumid":"090111738011c2e9:Communication Plan 865944.docx:application/vnd.openxmlformats-officedocument.wordprocessingml.document","DocDescription":"DOCS","CreateDate":"05/16/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"1","AttachmentFilename":"Communication Plan 865944","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"Insurance Documents                               ","ContentType":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","SuppNum":null,"Documentumid":"090111738011c2ea:Communication Plan 865944.docx:application/vnd.openxmlformats-officedocument.wordprocessingml.docum    ent","DocDescription":"Amedments","CreateDate":"05/17/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"20","AttachmentFilename":"Communication Plan 865944","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"Amendment                                         ","ContentType":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","SuppNum":null,"Documentumid":"090111738011c310:How to attach in OSA.pdf:application/pdf","DocDescription":"","CreateDate":"05/18/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"32","AttachmentFilename":"How to attach in OSA","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"EVP Attachment                                    ","ContentType":"application/pdf","SuppNum":null,"Documentumid":"090111738011c2ec:WP_SQL_Query1.pdf:application/pdf","DocDescription":"","CreateDate":"05/18/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"27","AttachmentFi    lename":"WP_SQL_Query1","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"Expense                                           ","ContentType":"application/pdf","SuppNum":null,"Documentumid":"090111738011c2ed:SyamOld_Passport.pdf:application/pdf","DocDescription":"","CreateDate":"05/18/2019","Userid":null,"LastChnageDate":null,"LastChnageUserid":null,"DocTypeCode":"27","AttachmentFilename":"SyamOld_Passport","ExpirtyDate":null,"IsDeleted":null,"DocTypeCodeDescription":"Expense                                           ","ContentType":"application/pdf"]

AJAX 调用:

$("#btnVendorSearch").click(function() 
if (RequiredFieldValidate() != false) 
    var SupplierNumber = $('#txtVendorNumber').val();
    $.ajax(
        type: "POST",
        url: getExactPath('/Supplier/GetSupDocuments'),
        async: false,
        data: 
            SupplierNo: SupplierNumber
        ,
        dataType: 'Json',
        success: function(jsonData)     
            var jsonobj = JSON.parse(jsonData);
            if (jsonobj.error == "" || jsonobj.error == undefined) 
                FillGrid(jsonobj);
             else 
                console.log(jsonobj.error);
            
        ,
        error: function() 
            alert("Unable to fetch the data");
        ););

控制器方法:

public JsonResult GetSupDocuments(string SupplierNo) 
    string Error = "";
    DocumentumUtil dUtil = new DocumentumUtil();
    List < Attachment > AttachmentDetails = new List < Attachment > ();
    try 
    AttachmentDetails = dUtil.GetSupplierAttachments(SupplierNo);
    return this.Json(AttachmentDetails);
     catch (System.Exception ex) 
        Error = ex.Message;
    
    return this.Json(new error = Error);

它应该返回如下。请帮帮我。

[object,object,object,object]

【问题讨论】:

错误信息是什么? 错误:JSON 未定义 我刚刚知道 jQuery.parseJSON() 正在工作。但我只想知道 JSON.parse() / jQuery.parseJSON() / JSON.stringify() 之间的区别。 【参考方案1】:

JSON 字符串现在正在配对到数组对象中。

jQuery.parseJSON()

【讨论】:

以上是关于jQuery Ajax 调用返回 JSON 字符串而不是对象数组的主要内容,如果未能解决你的问题,请参考以下文章

jQuery---ajax

JQuery .ajax 返回json格式,浏览器显示带有转义字符问题

无法解析 JQuery ajax 调用返回的 JSON

jquery ajax 后台响应成功,返回正确json但不执行success方法,执行error的问题

如何从MVC5中的jquery ajax调用中获取部分视图和JSON数据?

JQuery ajax调用的返回值