Ответ 1
Вы можете попробовать использовать метод JSON.stringify()
для автоматического преобразования массива в JSON. Просто передайте результат из этого.
data: { json: JSON.stringify(newArray) }
Надеюсь, что это поможет
Я пытаюсь отправить 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. Просто передайте результат из этого.
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()
not json_decode()
! Таким образом вы получите строку json и сможете записать ее.
Не нужно использовать json_decode, если вы сохраняете его в текстовом файле. jQuery кодирует ваш массив в формате JSON, поэтому PHP должен просто записать этот формат прямо в текстовый файл. Если вы хотите открыть этот файл и получить доступ к данным удобным способом, прочитайте его содержимое в переменной и THEN запустите json_decode() на нем.