при обработки ответа с сервера стоит
try { jsn = JSON.parse(jsn) } catch (e) { alert(e) //ошибка в позиции кавычки } ошибка то не вываливаеться а все норм + в консоли все бьеться... |
Sergey1986,
ищите причину ошибки, вы же не руками на сервере готовите json, может в исходных данных бардак, а потому и результат таков. Вот ваши данные и проблем не будет: <? if($_POST) { $a = (object)[ ['id'=>1, 'name'=> 'ООО "Газпром"'], //пусть это имя в двойных кавычках ['id'=>2, 'name'=> "ООО 'Шел'"] //пусть это имя в одинарных кавычках ]; exit(json_encode($a, JSON_UNESCAPED_UNICODE)); } ?> <html> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $.post(location, {p:1}, function(d) { try { d = JSON.parse(d); alert(d[0].name+'\n'+d[1].name) } catch (e) { alert(e) } }) </script> </head> </html> А вы не выясняя причин, хотите методом научного тыка выкрутиться. |
ОКАЙ, поэтапно
из бд array(2) { [0]=> array(2) { ["id"]=> string(1) "1" ["name"]=> string(25) "ООО "Сортир 123"" } [1]=> array(2) { ["id"]=> string(1) "2" ["name"]=> string(15) "ООО 'Хер'" } } $data = ['data' => $этот_массив, 'шляпа' => 'еще мусора'] далее это в $response = json_encode($data, JSON_UNESCAPED_UNICODE ); exit ($response); обработка ответа {..... "data":{"list":[{"id":"1","name":"ООО \"Сортир 123\""},{"id":"2","name":"ООО 'Хер'"}]}} далее распарсить data: list: Array(2) 0: {id: "1", name: "ООО "Сортир 123""} 1: {id: "2", name: "ООО 'Хер'"} length: 2 __proto__: Array(0) __proto__: Object вроде все честно... 1: {id: "2", name: "ООО 'Хер'"} это выводиться все ок, так как там одинарные ковычки 0: {id: "1", name: "ООО "Сортир 123""} а вот это обрубаеться.... |
надо добавить что в консоли браузера все выволдиться как положено
а вот если запихивать в html += '... '+ data.list[0].name + '....'; $('#idt').append(html); выводит ООО при двойных ковычках а при одинарных ввыодит весть текст |
Если так [{"id":"1","name":"ООО \"Сортир 123\""},{"id":"2","name":"ООО 'Хер'"}] и это ajax, то проблем быть не должно. Ну это тоже самое как alert("A \"B\""), обычное экранирование. Что-то тут не то.
|
упихваю это вот сюда
html += '<input id="" type="text" name="contractors-name" value="' + json.data.list[1].name + '" autocomplete="off" required>'; |
Ну так чего вы хотите, вы пишите об ошибке, которой по идее быть не должно, коли в консоли есть. А оказывается вы впихиваете в двойные кавычки двойные кавычки - value="' + json.data.list[1].name + '"
Посмотрите html после этой операции, станет понятно причина - JSON.parse тут вообще не причем. Экранировать надо кавычки в name для такой вставки. |
точно, ни какой магии :-?
|
т.е. перед вставкой
|
Цитата:
<input value="<?=htmlspecialchars('ООО "Газпром"', ENT_QUOTES)?>" /> О чем нибудь это говорит? Не хотите проблем подобных, значит пропускайте строковые значения через htmlspecialchars, то есть до декодирования json в вашем случае. |
Часовой пояс GMT +3, время: 21:38. |