【发布时间】:2015-12-02 02:25:00
【问题描述】:
我有以下代码,它在其他 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\",
我尝试将“\”替换为空字符串,但它不起作用
成功调用 loadAsociatedTable 函数时的这个 AJAX 并且这样做:
for (var i = 0; i < $.parseJSON(data).length;i++){
并且在 $.parseJSON(data).length 中有错误,因为不要将此字符串转换为对象。
我在 Chrome 中检查,JSON 没问题,没有这个栏“\”,并认识到像一个对象,问题仅在 IE v.11 中。
【问题讨论】:
-
您从
$.parseJSON(data)收到的错误消息是什么?而且,data是loadAsociatedTable()的第二个参数吗?您是否同时尝试.replace()和$.parseJSON()?您是否尝试过在success中只使用$.parseJSON(data.d)? -
$.parseJSON(data).lenght 的错误是“对象不支持属性或方法'parseJSON'”,JSON 错误包含附加“\”,当我尝试拥有我有这个错误的对象的长度。没错,loadAsociatedTable 的第二个参数就是这个 AJAX 的响应
-
该错误与
$对象本身没有parseJSON()方法有关。你在为$使用jQuery 或类似的库吗?你用的是什么版本?在 jQuery 中,jQuery.parseJSON()是在 1.4.1 中添加的,并且在较低版本中不可用。 -
你最后一个问题的回答是:是的,但是我在JSON的某些参数中有很多“\”,最新的几行是:\“Estado solicitud x Liquidador\”:null,\ "Honorarios por tabla\":null,\"Gastos por tabla\":null,\"Ruta Documento\":\"\\\\\\\\172.18.33.3\\\\Stardoc\\\\ZambaVolumenes\ \\\Desarrollo\\\\VolSiniestros\\\\VOLSIN011\\\\26037\\\\13\\\\4859528.pdf\",\"DoctypeId\":\"26037\",\"IdDoc\ ":4859528}]"
-
我正在使用 jquery-1.4.2.min.js
标签: javascript json ajax