通过jQuery AJAX POST发送JavaScript数组

时间:2015-05-29 02:07:02

标签: javascript php jquery ajax json

我想要做的是将JavaScript数组发送到PHP文件 这就是我得到的:

var mydata = [];
        console.log(document.getElementsByTagName("input")[0].name);
        for (var i = 0; i < document.getElementsByTagName('input').length; i++) {
            mydata[document.getElementsByTagName("input")[i].name] = document.getElementsByTagName("input")[i].value;
        };
        for (var i = 0; i < document.getElementsByTagName('select').length; i++) {
             mydata[document.getElementsByTagName("select")[i].name] = document.getElementsByTagName("select")[i].value;
        };
        console.log(mydata);

        $.ajax({
            method: "POST",
            url: "q.php",
            data: {'lol': JSON.stringify(mydata)},
            contentType: 'application/json',
            dataType: 'json'
        })
        .done(function( msg ) {
            alert( "Data Saved: " + msg );
            $('#debug').html(msg);
        });

正如你所看到的,我创建了一个带循环的数组,此时一切都很好。问题是当我尝试通过POST与JSON发送它。我不知道这是不是最好的方法......

我尝试了JSON.stringify();,但$_POST仍为空

似乎帖子没有发送,但我可以在控制台中看到已发送XHR帖子请求。

1 个答案:

答案 0 :(得分:3)

尝试使用此代码并查看更改。

删除 contentType: 'application/json', dataType: 'json'

var mydata = []更改为var mydata = {}

你的ajax应该是这样的

        $.ajax({
            method: "POST",
            url: "q.php",
            data: {'lol': mydata}
        })
        .done(function( msg ) {
            alert( "Data Saved: " + msg );
            $('#debug').html(msg);
        });

你不必将你的mydata字符串化,因为你已经将它作为对象删除了。

希望有所帮助