Помогите пож Делаю так : <?php $js_array = json_encode($massiv); echo $js_array; // -- выводит массив, все нормально ?> Потом так: <input type='button' id="but1" name="but1" value='показать' onclick="for_nav('<?php echo $js_array;?>')"> После внажатия на кнопку выдает ошибку unterminated string literal И показует на фигурную скобку первую в строке которая получилась после json_encode - - >>> { Пробовал переменную $js_array обрабатывать addslashes($js_array) - не помогло Просто хочется чтобы функция была во внешнем файле. Чтобы потом ее использовать во многих местах. (насчет того, что можно написать текст скрипта в тексте страницы)
На ошибке останавливается и не хочет идти дальше Добавлено спустя 16 минут 26 секунд: На утро на свежую голову сделал вот это : 1) <?php $js_array = base64_encode(json_encode($massiv)); echo $js_array; ?> 2) в <head> добавил <script type="text/javascript" src="../js/zbs/base64.js"></script> 3) Конечно сделал такой файл base64.js и туда написал найденную на форуме функцию: // NACHALO /** * * Base64 encode/decode * http://www.webtoolkit.info * **/ var Base64 = { _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", //метод для кодировки в base64 на javascript encode : function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0 input = Base64._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if( isNaN(chr2) ) { enc3 = enc4 = 64; }else if( isNaN(chr3) ){ enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, //метод для раскодировки из base64 decode : function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if( enc3 != 64 ){ output = output + String.fromCharCode(chr2); } if( enc4 != 64 ) { output = output + String.fromCharCode(chr3); } } output = Base64._utf8_decode(output); return output; }, // метод для кодировки в utf8 _utf8_encode : function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if( c < 128 ){ utftext += String.fromCharCode(c); }else if( (c > 127) && (c < 2048) ){ utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); }else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, //метод для раскодировки из utf8 _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while( i < utftext.length ){ c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; }else if( (c > 191) && (c < 224) ) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; }else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } } //~ // Использовать так: //~ // 1 //~ 2 //~ 3 //~ 4 //~ 5 //~ 6 //~ 7 //~ 8 //~ //~ alert(Base64.encode('Кодируем в base64 на javascript')) //~ // результат //~ // JXUwNDFBJXUwNDNFJXUwNDM0JXUwNDM4JXUwNDQwJXUwNDQzJXU //~ wNDM1JXUwNDNDICV1MDQzMiBiYXNlNjQgJXUwNDNEJXUwNDMwIGphdmFzY3JpcHQ= //~ alert(Base64.decode('JXUwNDFBJXUwNDNFJXUwNDM0JXUwNDM4JXUwNDQwJXUwNDQzJXU //~ wNDM1JXUwNDNDICV1MDQzMiBiYXNlNjQgJXUwNDNEJXUwNDMwIGphdmFzY3JpcHQ=')) //~ // результат //~ // Кодируем в base64 на javascript // KONEC Дальше использовал ее при раскодировании внутри JS функции var json = Base64.decode('js_array'); // js_array - передается как параметр функци JS Вывел на экран и получил подобную структуру которую видел при echo в пункте 1) Массиву внутри функции еще не пробовал присваивать, но проброс уже не ругается и внутрь функции уже попадает. Сейчас поробую присвоить. Возможно заработает.