Есть задача, надо взять ХТМЛ код из файла, и передать его яваскрипту, в ХТМЛ коде весь джентльменский набор спецзнаков, но вот проблема, в каком-то месте проставляются \ перед двойными кавычками, думала, что это "magic_quotes_gpc", глянула phpinfo включены гады, отключила, но они продолжают добавляться, и как назло ТОЛЬКО перед ", если бы так же другие знаки экранизировались, было бы всё ок, но тут проблема в том, что мне надо экранизировать самой всё, а там получается уже начатая, но не законченная работа. Вот код: PHP: <? header("Content-Type: application/x-javascript"); $response = array(); $response['datadiv'] = $_GET['divid']; $response['menu_innerhtml'] = file_get_contents('html.container'); $response['parent_div_name'] = 'div123'; $jsondata = json_encode($response); ?> var data = eval('(<?echo $jsondata;?>)'); document.getElementById(data['parent_div_name']).innerHTML = data['menu_innerhtml']; document.getElementById('dynamic_data').removeChild(document.getElementById(data['datadiv'])); Как бы подправить по правильному? PHP: $response['menu_innerhtml'] = stripslashes(file_get_contents('html.container')); результат даёт тот же самый Нашла примерно место, на которое выпадает ошибка, в ХТМЛ файле, есть такое: HTML: <div class="button" onclick="somefunc('value',10);"> Data </div> Если убрать двойные кавычки, то всё норм, но их использование есть и будет, так как нужно, вопрос в том, как обработать строку так, чтоб перестала выскакивать ошибка? Общию картину чуток исправила, добавила экранирование одиночной кавычки PHP: <? header("Content-Type: application/x-javascript"); $response = array(); $response['datadiv'] = $_GET['divid']; $response['menu_innerhtml'] = file_get_contents('html.container'); $response['parent_div_name'] = 'div123'; $jsondata = json_encode($response); ?> ( function() { var data = eval('(<?echo str_replace("'","\'",$jsondata);?>)'); document.getElementById(data['parent_div_name']).innerHTML = data['menu_innerhtml']; document.getElementById('dynamic_data').removeChild(document.getElementById(data['datadiv'])); } )();
Ладно мальчики, давайте так, вы мне поможете с задачкой, а потом мы продолжим прикалываться, а нето сейчас нету настроения, пока не разберусь с проблемой
animegirl хз что тут делать. я вобще не знаю как себя вести в ситуации когда какие-то там мэджиквотесы включены. у меня они всегда выключены. еще вот помнится есть мэджикквотесрантайм =) http://www.php.net/manual/en/function.g ... untime.php и вобще на этом форуме либо фотка либо сиськи, но аватарки - низя
Выключила и те и другие, json_encode экранирует ", я добавила ещё экранирование ' проблема в том, что браузер ошибками плюётся. Ясно, сейчас покопаюсь на компе, подумай пока, как мне помочь
animegirl на самом деле они не злые. нужно просто дать им шанс ) не совсем ясно зачем нужно делать eval ? чем не пойдёт var data = <?php echo $jsondata; ?>; ? тогда не нужно даже экранировать одинарные кавычки какие именно ошибки выдаёт браузер? пользуешься фаербагом для отладки? не видя полной картины javascript кода, и не зная ошибок, довольно сложно сказать где именно падает. а твоё предположение насчёт строки с ошибкой возможно верное, но только возможно... было бы желательно увидеть данную страницу "вживую", пощупать её своими браузерами... =)))))))
таже была проблема http://www.php.ru/forum/viewtopic.php?t=34498 Смотри мои посты... А если у тебя записывается( или уже так )экранированными то, убрать нужно убрать экранирование. Убираем str_replace('\\','',в каком html <span style= \"color:#000000;\"></span> ), убрать \ <- палочки ); а уже вывод и т.д. в js: у меня так: PHP: <?php $s='<a href=\'javascript:edits("'.addcslashes($jsondata,'""').'")\'>ТЫЦ</a>'; ?> у тебя наверно так: [js]var data = eval('(<?php echo addcslashes($jsondata,'""');?>)');[/js] HTML: <span style= \"color:#000000;\"></span> \ <- экранируем И у нас всегда без них только js знает, что нужно их и ставим, а везде всегда без них где - то в коде.
вы вобще ее сообщение читали? ЭТО БАРАБАХИ! Gromo не совсем ясно зачем нужно делать eval ? это не пхп, а яваскрипта eval правда, это не объясняет такой конструктив.
я в курсе, что это яваскрипт эвал, однако он тут, имхо, лишний. в нём просто нет необходимости при json_encode.
На сколько я помню, надо подключить скриптик (кажись, json_parse.js) и передать полученный json не в eval(), а в метод из этого файлика (кажись jsonParse()). И на выходе получить уже объект.