发送和解码JSON数组

时间:2012-07-11 19:00:31

标签: php ajax arrays json

我正在尝试编码并将JSON数组发送到php页面并将其添加到mysql:

var data = $('form').serialize();
$.ajax({
    type: 'POST',
    url: 'naujas.php',
    dataType: 'json',
    data: ({
        json: JSON.stringify(data)
    }),
    success: function () {
        $('#naujas').load('naujas.php');
    }
});

但是我觉得它不起作用我得到的回应是这样的:pav=1&ppav=2&kiekis=3&kaina=4d&ppav=5&kiekis=6&kaina=7&ppav=8&kiekis=9&kaina=0

php文件

<?php
    $json = json_decode($_POST['json']);
    echo $json;
?>

我做错了什么?

3 个答案:

答案 0 :(得分:2)

试试这样:

var data = $('form').serializeArray().reduce( function(obj,cur){
    obj[cur.name] = cur.value;
    return obj;
},{});

解释

  • .serializeArray()返回一个数组,其结构如下:

    [ {name:"inputname1",value:"inputvalue1"},
      {name:"inputname2",value:"inputvalue2"},
      //---------------------------------------
      {name:"inputnamen",value:"inputvaluen"} ]
    
  • .reduce()函数将该数组转换为object:

    { "inputname1":"inputvalue1",
      "inputname2":"inputvalue2",
      //---------------------------------------
      "inputnamen":"inputvaluen" }
    

答案 1 :(得分:0)

dataType: 'json'已经告诉jQuery以json格式发布数据。

您需要做的就是发布您的数据,如下所示:

data: (data),

问题来自将对象转换为字符串表示(stringify)。

答案 2 :(得分:0)

您可能需要使用php stripslashes

http://php.net/manual/en/function.stripslashes.php

我认为这就是这样的

json_decode(stripslashes($_POST['json']));