JSON响应AJAX中的格式错误

时间:2015-05-29 16:50:18

标签: javascript json ajax

我有以下代码,它在其他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);          
        }
    });

错误是,当我有WS的data.d结果时,JSON在字符串中添加adicionals“\”字符:

回应的开始: [{\“Nombre del Documento \”:\“Indemnizacion / Factura.22076 - Proveedor - Sin:38653 Global:No \”,\“Estado \”:\“Pago finalizado \”, < / p>

我尝试将“\”替换为null字符串,但它不起作用

这个AJAX成功调用loadAsociatedTable函数时这样做:

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

并且$ .parseJSON(data).length中有错误,因为请勿将此字符串转换为对象。

我在Chrome中检查过并且JSON没问题,没有这个栏“\”,并且认识到它像对象一样,问题仅在IE v.11中。

3 个答案:

答案 0 :(得分:0)

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

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

您可以尝试自行修复JSON,将\"替换为",这只是

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

但问题是你还会销毁代表字符串值中双引号的\"个序列。这是一个非常棘手的问题需要解决。因此,最好的解决方案是让服务器向下发送正确的JSON。

答案 1 :(得分:0)

你能发布完整的JSON,这将有助于我分析 同时试试这个

在data.d上使用Eval,如eval(“{”+ data.d +“}”);

或JSON.Parse(data.d)

尝试在这里验证json http://jsonlint.com/

答案 2 :(得分:0)

最后我可以解决问题,我使用JSON.parse()代替$ .parseJSON(),也许是JQuery版本。 AJAX响应包含这个附加组件“\”但是当我解析这个对象时,JS会毫无问题地转换它。 谢谢你的帮助!