Я пытаюсь отправить 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 ().