@kiberchainik
начинающий найкрутейшЫй програмЁр

Как отправить массив через ajax?

есть массив, двумерный
var obj = {
                         'generalFields':{
                             'title':$('input#title').val(),
                             'keywords':$('input#keywords').val(),
                             'mainCategory':$('select#mainCategory').val(),
                             'subCategory':subCategory,
                             'typeCategory':$('select#selecttypeCategory').val(),
                             'description': $('input#description').val(),
                             'comments':$('input[name="comments"]:checked').val(),
                             'fulltext': $('div[role="textbox"]').text(),
                             'imgs':imgs
                         },
                         'optionFields':$('[field=fieldsAdvert]')
                     }

при отправке ajax
$.ajax({                             
                url: '/NewAdvert',
                type:'post',
                contentType: false,
                processData: false,
                data: {data: obj},
                dataType: 'json',
                cache: false,
                success: function (result) {}
            });

отправляется объект, при выводе на вервере print_r($_POST) выводися пусто массив
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 2
w13vitaliy
@w13vitaliy
self-taught developer since 2020
Попробуйте :
fetch("/your url", {
method: "POST",
body: JSON.stringify({data: obj})
})
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
Попробуйте мой вариант:
// Функция для преобразования объекта
// в строку формата x-www-form-urlencoded:

function httpBuildQuery(object_to_convert) {
	
	var params = new URLSearchParams();
	
	var paramsGenerator = function(parent_key, iterate_object) {
		
		for (var current_key in iterate_object) {
			
			if (typeof iterate_object[current_key] == 'string' || typeof iterate_object[current_key] == 'number') {
				
				if (parent_key.length > 0) {
					var property_path = parent_key + '[' + current_key + ']';
				} else {
					var property_path = current_key;
				}
				
				params.append(property_path, iterate_object[current_key]);
				
			} else if (typeof iterate_object[current_key] == 'object') {
				
				if (parent_key.length > 0) {
					var property_path = parent_key + '[' + current_key + ']';
				} else {
					var property_path = current_key;
				}
				
				paramsGenerator(property_path, iterate_object[current_key]);
				
			}
			
		}
		
	}
	
	paramsGenerator('', object_to_convert);
	
	return params.toString();
	
}

// Протестируем работу функции на примере:

var test_object = {
	'raz' : 'Первое свойство',
	'dva' : 'Второе свойство',
	'tri' : {
		'test' : 'Тест',
		'proverka' : 'Проверка',
		'massiv' : [
			'aaa',
			'bbb',
			'ccc',
			{
				'lalala' : 'lololo',
				'tratata' : 'trototo'
			},
			123,
			345,
			567
		]
	}
};

var send_string = httpBuildQuery(test_object);

var response = await (await fetch('/NewAdvert', {
	method: 'POST',
	headers: {
		'Content-Type' : 'application/x-www-form-urlencoded'
	},
	body: send_string
})).text();

console.log(response);

Вставьте это в консоли.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект