Подтвердить что ты не робот

Отправка 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 заранее!

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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);

Ответ 3

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

Ответ 4

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

Ответ 5

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