Как передать массив данных собранных querySelectorAll, через Ajax?
Здравствуйте мне нужно передать массив данных через Ajax, которые были собраны querySelectorAll? Вот фрагмент кода:
jQuery(document).ready(function(){
ajaxQuery();
function ajaxQuery()
{
var arr = [];
var allBlock = document.querySelectorAll("div.social_locker");
for(var i = 0; i < allBlock.length; i++)
{
arr.push(allBlock[i].id);
}
$.ajax({
type: "POST",
data: "action=showBlock&arr="+JSON.stringify(arr),
url: "/action.php",
dataType: "json",
success: function(responce)
{
if(responce.result=="success")
{
jQuery('#content_show'+num).html(responce.message);
}
}
});
}
|
Katy93,
success: function(responce){ jQuery('#content_show'+num).html(responce);}
|
На самом деле мне нужно было понять почему на сервере вместо цельного элемента массива я получаю только один символ.
Например при записи файла через file_put_contents записывается только один символов. Нужно было массив пропустить через json_deocode. Было Цитата:
Цитата:
|
Katy93,
ждите специалиста по php |
Цитата:
Ваши данные имеют следующий вид: action=showBlock&arr=[1,2,3] На сервере это будет _POST с 2-мя ключами: «action» и «arr», но последний будет не массивом как вы ожидаете, а строкой. Чтобы сервер прочитал ключ «arr» как массив, данные должны иметь следующий вид: action=showBlock&arr[]=1&arr[]=2&arr[]=3 Проще всего изменить content-type запроса на «application/json», а данные передавать следующим образом:
data: JSON.stringify({
action: 'showBlock',
arr: [1, 2, 3]
})
В этом случае сервер корректно разберет передаваемые вами данные. |
| Часовой пояс GMT +3, время: 22:23. |