Snowcore’s блог » Blog Archive » Передача javascript объекта на сервер

Передача javascript объекта на сервер

Обычно данные для AJAX запроса передаются методом GET в виде переменная1=значение&переменная2=значение. А если нам нужно передать большую структуру данных, например объект javascript или массив объектов? Согласитесь, что на много удобнее работать с объектами, а не с отдельными переменными.

Как передать объект javascript на сервер?

На помощь нам приходит JSON (JavaScript Object Notation). JSON - это запись javascript объекта в строковом представлении. В таком случае мы можем наш массив javascript объектов передать на сервер в виде JSON строки, а на сервере “расшифровать” эту строку в такой же массив объектов (php объектов).

Для решения подобной задачи нам нужна функция для преобразования объектов в JSON строку. Сделать это можно при помощи библиотеки: http://json.org/json2.js (здесь только 2 метода - parse и stringify). Подключаем этот файл к странице:

<script src=“javascript/json.js”

type=“text/javascript”></script>
<script type=“text/javascript”>
<!–
// создаем массив объектов
var arrObjects = new Array();
arrObjects.push( { id: 5, name: “rukudic”, age: 24} );
arrObjects.push( { id: 7, name: “Zhenya”, age: 22} );

// передаем массив на сервер (например, при помощи jQuery)
$.ajax({
type: “POST”,
url: ‘./ajax.Handler.php’,
dataType: “json”,
data: “arrObjects=” + JSON.stringify(arrObjects),
success: function(response)
{
// обрабатываем ответ сервера
}
});

–>
</script>

На сервере преобразовываем значение при помощи php функции json_decode:

$arrObjects = json_decode($_POST[‘arrObjects’]);

5 Responses

  1. Гвидон Маляров Says:

    кстати, замечал странность за JSON.parse(). иной раз при парсинге, этой функцией без всяких ошибок весь код слетал и дальше JSON.parse() не шел, однако eval там же срабатывал нормально. пытался искать какие эксепшены выбрасывает .parse(), но че-т не нашел…

  2. admin Says:

    Да, бывает и такое.
    Хотя, там же сразу написали:
    “NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK” ;-)

  3. специалист Says:

    Удивительно.

  4. Лика К Says:

    Добрый день. А не подскажете, где можно поискать такую же информацию, но на английском языке

  5. admin Says:

    Горе-комментаторы… Во хоть бы свежие посты комментили, а то смысл старые трогать? Они уже проиндексированы давно…

Оставить комментарий

Внимание: Комментарии проходят ручную модерацию