【发布时间】:2016-09-10 05:53:31
【问题描述】:
JS
序列化 FORM 中的数据,将其字符串化并使用 AJAX 将其作为 JSON 发布到 update.php
jQuery.fn.serializeObject = function () {
var formData = {};
var formArray = this.serializeArray();
for(var i = 0, n = formArray.length; i < n; ++i)
formData[formArray[i].name] = formArray[i].value;
return formData;
};
$(function() {
$('form').submit(function() {
data = $('form').serializeObject();
alert(JSON.stringify(data));
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'inc/update.php',
data: {json: JSON.stringify(data)},
dataType: 'json'
});
});
});
update.php 文件应解码为数组
$str_json = file_get_contents('php://input'); //($_POST doesn't work here)
$response = json_decode($str_json, true); // decoding received JSON to array
$name = $response['name'];
$update = $pdo->prepare("UPDATE user SET name='".$name."' WHERE id='3';");
$update->execute();//the SQL works fine with String for $name
使用 Firefox 中的 Tamper Data 插件,我检查了 POSTDATA,它是:
json=%7B%22name%22%3A%22fff%22%7D
这就像:
json={"name":"fff"}
我是 JS/AJAX/JSON 的新手,我找不到我的错误。所以请帮助我。
我搜索了好几个小时都没有成功。
【问题讨论】:
-
第二个解码参数 = true
-
-我试过 $name = $response['name'];但不起作用:-( -2nd decode 参数已经是真的
-
我只是想指出您已将您的第二个参数设置为 true
-
现在我明白了,谢谢 :-)
标签: javascript php json ajax post