我正在尝试编码并将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;
?>
我做错了什么?
答案 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']));