Отправка JSON через AJAX на PHP с помощью jQuery

Я пытаюсь отправить JSON в PHP-файл с помощью jQuery AJAX, в основном то, что я пытаюсь сделать, это получить значения и идентификаторы нескольких дочерних элементов, а затем назначить их объекту JSON и затем отправить этот объект через ajax в PHP-файл, который затем обрабатывает его и вводит в базу данных.

Вот мой код,

Javascript / JQuery:

function test(){ var selects = $('#systems_wrapper').find('.dropDowns'); var newArray = new Array(); selects.each(function(){ var id = $(this).attr('id'); var val = $(this).val(); var o = { 'id': id, 'value': val }; newArray.push(o); }); $.ajax({ type: "POST", url: "qwer.php", dataType: 'json', data: { json: newArray } }); } 

PHP:

 <?php $json = $_POST['json']; $person = json_decode($json); $file = fopen('test.txt','w+'); fwrite($file, $person); fclose($file); echo 'success?'; ?> 

Он создает файл, но он совершенно пуст, любая идея, что это может быть?

Thanx заранее!

Вы можете попробовать использовать метод JSON.stringify() для JSON.stringify() преобразования массива в JSON. Просто передайте результат из этого.

 data: { json: JSON.stringify(newArray) } 

Надеюсь это поможет

Не используйте массив.
используйте простую строку:

 var o = '['; selects.each(function(){ var id = $(this).attr('id'); var val = $(this).val(); o += '{ "id": "'+id+'", "value": "'+val+'" },'; }); o = o.substring(0,o.length-1); o += ']'; 

и в ajax просто отправьте строку 'o'

  data: { json: newArray } 

в php-файле просто сделайте json_decode ($ json, true);
он вернет массив массива, доступ к которому вы можете получить с помощью foreach
если вы хотите увидеть массив, используйте var_dump ($ person);

Вы должны установить contentType для своего ajax POST. Я бы использовал contentType: «application / json»;

Вы должны использовать json_encode() не json_decode() ! Таким образом вы получите строку json и сможете ее написать.

Не нужно использовать json_decode, если вы сохраняете его в текстовом файле. jQuery кодирует ваш массив в формате JSON, поэтому PHP должен просто записать этот формат прямо в текстовый файл. Когда вы хотите открыть этот файл и получить доступ к данным удобным для использования способом, прочитайте его содержимое в переменной и THEN запустите json_decode ().