Задать вопрос
@Dizzabel

При обработки ответа в формате JSON происходит ошибка SyntaxError, как исправить?

Есть локальная CRM с базой данных mssql. Есть веб-интерфейс для этой CRM. В интерфейсе есть событие которое отправляет серверу url и получает данные в формате JSON, далее на основе полученных данных формирует таблицу.
Выглядит так:
var req = null;
      var frm = null;
      function ReadyStateChange()
      {

        if (req.readyState == 4) {
        if (req.status == 200) {
	
	try {
	var newArr = JSON.parse(req.responseText);
	} catch (e) {
		document.getElementById("PRVDATA").innerHTML = "Ошибка разбора ответа от сервера: " + e +"<br>" ;
	}

	var outhtml;
	outhtml = "<b>Список К Исполнению системы визирования</b><br>"
	outhtml += "<table border=1 width=700><tr><th class=th width=120>Тип документа</th><th class=th width=100%>Описание документа</th><th class=th width=130>Время запроса</th></tr>";   
	for (var i=0; i < newArr.length; i++) {
		outhtml +=  "<tr><td class=td width=80 align=center>" + "<input type=button class=btnlink value="+ newArr[i].TypeName+ "  onClick= \"return DoEntryShow(&#034" + newArr[i].ID +"&#034);\">" + "</td><td class=td width=100%>" + newArr[i].Description+ "</td><td class=tdwar width=130>" + newArr[i].EndDate+"</td></tr>"; 
   	}

	outhtml +=  "</table>";
	document.getElementById("PRVDATA").innerHTML = outhtml; 

          } else
            document.write("Error code " + req.status);

DoEntryShow(newArr[0].ID);
} 

 };

      function DoShow()
      {
        
       url = "GetJsonProviderData?PRVNAME=MsRegViewArbitraryDocTurnover&pSetVid=3&pID={00000000-0000-0000-0000-000000000000}" ; //Не обращайте внимание такой url работает с другой таблицей

        req = getXmlHttp();
        req.onreadystatechange = ReadyStateChange;
        req.open("GET", url, true);
        req.send(null);
        return false;
      };

Вот только проблема в том, что я получаю ошибку в виде:
5ddf65e51b5e1919495929.png
5ddf65edc54ce932482718.png
Как видите всегда ругается на разные поля. Как мне экранировать(?) полученный JSON чтобы было без ошибок? Все уже перепробовал.
Сразу скажу, что доступа к бэку (CRM) у меня нет и не будет, надо исправлять на фронте.
А вот как должна выглядеть правильно сформированная таблица (сразу оговорюсь что она маленькая и все спецсимволы мы заменили на бэке)
5ddf672a060c6202460518.png

UPD1
Вскрылось что я получаю не валидный JSON ответ, на картинке выделено, после запятой должен быть перенос строки
5ddf8f4629da8846655448.png
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Средний 11 комментариев
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Можно обойтись своими силами. Однажды я уже отвечал на подобный вопрос.
Надеюсь, сможете сами переписать на JavaScript, ну или хотя бы ухватить идею и сделать что-то похожее. Но вообще, конечно, надо продолжать давить на бекендеров.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@MOTORIST
Если backend не починить и костыль единственное решение, то чини на клиенте dirty-json или аналог.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы