JSON响应AJAX格式错误

Bad format in JSON response AJAX

本文关键字:错误 格式 AJAX 响应 JSON      更新时间:2023-09-26

我有以下代码,它在其他PC服务器上称为web服务。数据参数正常

"{ ControlId: 'ZAsociated_26037', TaskId: 1495613, UserId: 166396,  TBodyId: ''}"
 $.ajax({
        type: "POST",
        cache: false,
        dataType: "json",        
        contentType: "application/json; charset=utf-8",
        data: "{ ControlId: '" + controlId + "', TaskId: " + taskid + ", UserId: " +
              userId + ",  TBodyId: '" + $(tbody).attr("id") + "'}",
        url: getWSPath() + "/GetZAsociatedResults", // CARGAR AQUI LA DIRECCION DEL WEBSERIVCE
        success: function (data) {         
            if (data != null && data.d != "[]") loadAsociatedTable(controlId, data.d);
           $("#loadingImg" + controlId).remove();
        },
        error: function (xhr, ajaxOptions, thrownError) {
           $("#loadingImg" + controlId).remove();
           alert("Error al obtener los datos: " +thrownError + "'nCodigo de error: " +xhr.status);          
        }
    });

错误是,当我有数据。JSON在字符串中添加"'"字符

响应的开始:[{'"Nombre del documentto '":'" indemnity/Factura。22076 - Proveedor - Sin: 38653 Global: No'",'"Estado'":'"Pago finalizado'",

我尝试将"'"替换为空字符串,但它不起作用

这个AJAX成功调用loadassociatedtable函数时,这做:

 for (var i = 0; i < $.parseJSON(data).length;i++){

在$. parsejson (data)中出现错误。长度,因为不要将此字符串转换为object。

我检查了Chrome和JSON是ok的,没有这个栏"'",并认识到,像一个对象,问题是在IE v.11只。

你可以张贴完整的JSON,这将有助于我分析同时试试这个

对数据使用Eval。D like eval("{"+data.d+"}");

或JSON.Parse (data.d)

try validate you json here http://jsonlint.com/

服务器的JSON响应无效。一些服务器程序员误解了JSON双引号转义,并试图在任何地方应用它。让服务器返回有效的JSON。大多数服务器环境都有标准的JSON库,这些库将构建不是无效的JSON。正确的JSON当然是

[{"Nombre del Documento":"Indemnizacion/Factura. 22076 - Proveedor - Sin: 38653 Global: No","Estado":"Pago finalizado", ...

您可以尝试自己修复JSON,通过将'"替换为",这将只是

replace(/''"/g, '"')

,但问题是,你也将破坏'"序列表示字符串值中的双引号。这是一个很难解决的问题。所以最好的解决方案是让服务器发送正确的JSON开始

最后我可以解决这个问题,我使用JSON.parse()代替$. parsejson(),可能是JQuery版本。AJAX响应包含这个额外的"'",但当我解析这个对象时,JS转换它没有问题。谢谢你的帮助!