使用jQuery通过AJAX将JSON发送到PHP

时间:2010-09-08 12:35:22

标签: php jquery ajax json

我正在尝试使用jQuery AJAX将JSON发送到PHP文件,基本上我要做的是获取一堆子元素的值和id然后将它们分配给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!

5 个答案:

答案 0 :(得分:19)

您可以尝试使用JSON.stringify()方法将数组自动转换为JSON。只需传递此输出。

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

希望这有帮助

答案 1 :(得分: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);

答案 2 :(得分:1)

您应该在ajax POST上设置contentType。我会使用contentType:“application / json”;

答案 3 :(得分:1)

您应该使用json_encode()而不是json_decode()!通过这种方式,您将获得json字符串并能够编写它。

答案 4 :(得分:1)

如果要将json_decode保存到文本文件中,则无需使用它。 jQuery以JSON格式对您的数组进行编码,然后PHP应该将该格式直接写入文本文件。如果要打开该文件并以可用的方式访问数据,请将其内容读入变量,然后在其上运行json_decode()。