440Hz, а не подскажете чем Вы пользуетесть на стороне JS для конвертации массива в JSON. Я вот скачал json.js c json.org, как много где написано. Все нормально, у массивов появился метод .toJSONString(). Он работает. Но при переборе циклом for (i in Array) у всех массивов появляются два лишних элемента, в которых записаны функции из этого файла. Хотя свойство Array.length не изменяется и for (i=0; i<Array.length; i++) работает нормально. Подскажите в чем проблема?
А как передаете его на сервер? Я так понимаю у меня есть массив(объект) в JS, мне из него нужно получить JSON строку, передать на сервер как строку, а там конвертировать при помощи json_decode в массив. Там с ним поработать, потом json_encode и отправить обратно клиенту. Там eval и снова получается JS массив. Или я чтото не так делаю?
Допустим у меня есть массив объеков (на клиенте) все элементы которого выступают в качестве параметров для запроса. Ответ сервера это также куча строк. Для того чтобы сделать запрос на сервере, я должен передать с клинета массив объектов. Что я делаю. Преобразую массив при помощи .toJSONString() (нагугленное расширение для объекта Array) Получаю этот массив в виде строки JSON. Потом эту строку передаю при помощи AJAX на сервер. Там я получаю строку, преобразую опять в массив. Использю элементы массива как мне необходимо, формирую запрос к БД. Получаю результат запроса n строк. Создаю из этих строк JSON строку и вывожу как ответ сервера. Клиент получает AJAX ответ JSON строку, я ее вставлю в eval и получаю массив элементов. Каждый элемент это строка из результата запроса к БД, в каждом элементе есть ключ->значение соответствующее столбец->значение из БД. С массивом на стороне клиента продолжаю работать при помощи JS
Проблема(она не кринтична, тема то не моя) в самом начале этого процесса передачи-получения данных. При преобразовании массива на стороне клиента в JSON. Это же обязательно делать в моем случае? И как это далаете Вы? В том как это делаю я появилась небольшая проблема Вы ответели, мол, конвертируте на стороне ПХП, но ведь для начала все равно надо сделать массиd->JSON на клиенте? Я наверно сбил Вас с толку тем что тема "Передача из ПХП", а у меня вопрос наоборот на ПХП сервер. Звыняйте...
можно же сразу JSON передать. без преобразования в строку, как параметры. POSTом и вернуть так же JSON, ан не строку.
Ну правильно, я о другом и не говорю. Я говорю о преобразовании массива в JSON(JSON это же и есть строка вроде) На клиенте: [js]var value=1; var arr=new Array(); arr[0]['name']='Иванов' arr[0]['name2']='Иван' arr[0]['name3']='Иванович' arr[1]['name']='Петров' arr[1]['name2']='Петр' arr[1]['name3']='Петрович' //ajax var request=newRequest(); var url="my_url.php"; //вопрос тут. Допустим мне нужно весь массив arr на сервер отправить (бывает что нужно, не смотрите что я в качестве примера ФИО взял) //параматры AJAX запроса var param="par1="+value; param+="&par2="+arr.toJSONString(); //конкретная строка которая меня интересует. request.onreadystatechange=my_function() request.open("POST", url, false); request.send(param);[/js] На сервере: PHP: <?$value=$_POST['par1']; $arr=$_POST['par2']; //это JSON $arr=json_decode($arr, true); //это уже массив echo $arr[0]['name'] //Иванов echo $arr[1]['name3'] //Петрови?> Вопрос касается строки 18 в JS.
Ага руками... когда решил AJAX попробовать использовать, сразу к JQ обратился, но не осилил изза отсутствия знаний по простому JS. Купил книжку по JS, там про AJAX достаточно написано, теперь вот не знаю стоит ли JQ заниматься. Не очень понятно что оно упрощает и какие собсно выгоды.