Здравствуйте!
Я получаю с одного сервиса данные в виде json объекта. Делаю это в javascript'е
Потом эти данные хочу передать на сервер через pjax. Методом post
Когда я это делаю, то pjax на каждый ключ в объекте создает свою переменную.
В результате, если я передаю предположим
var info = {
"id": 64479477,
"first_name": "Сергей",
"last_name": "Мишин",
"sex": 2,
"nickname": "",
"screen_name": "sergey_mishin",
"bdate": "6.6.1987"
}
с вот таким запросом:
$.pjax.reload({
container : '#content',
type : 'POST',
url : path,
data : info,
push : true,
replace : false,
timeout : 1000
});
то в пост запросе улетает
info[id]:64479477
info[first_name]:Сергей
info[last_name]:Мишин
info[sex]:2
info[nickname]:
info[screen_name]:sergey_mishin
info[bdate]:6.6.1987
Это так и должно быть и я чего-то не знаю?
Или я что-то не так делаю?
И если я не так делаю, то как можно передать json, чтоб не создавалось множество переменных?
можно конечно обернуть в stringify, а на сервере делать разбор. Но так не хотелось бы
================
UPD
Поизучав вопрос было найдено, что ajax/pjax так и работают. И это верно. И так и должно быть. С этим ничего не сделать. Если малый объем данных нужно передать, не стоит беспокоиться.
Если же речь будет идти о тысячах переменных (что существенно увеличит загрузку данных), то скорее лучше будет передавать данные как строку
$.pjax.reload({
container: '#content',
type: 'POST',
url: path,
data: {
jsonData: JSON.stringify(data)
},
push: true,
replace: false,
timeout: 1000
});
а на сервере делать json_decode($_POST['jsonData']);