我正在尝试整理一个表单的工作演示(包括 mysql),该表单使用 jquery 序列化表单数据并使用 php 检索数据,以便可以将其传递给 mysql 查询。
表单似乎正确地发布了数据,但我不确定如何设置看到 $_POST 的处理脚本来反序列化数据,以便我可以将其传递给 mysql。您可以在 http://www.dottedi.biz/demo/code/ajax/serialize 查看演示.
我试过使用:
$data=unserialize($_POST['data']);
反序列化数据,但返回时是空的。一个简单的 print_r ($_POST);从表单返回数组数据。如果您测试演示,您会看到这一点。请提出建议?
添加信息 - script.js 文件的内容:
$(document).ready(function() {
$('form').submit(function(evt) {
evt.preventDefault();
$.each(this, function() {
var input = $(this);
var value = input.val();
var column = input.attr('name');
var form = input.parents('form');
var linked_col = form.find('#associated').attr('name');
var linked_val = form.find('#associated').val();
// var serializedData = $(this).serialize();
$("#Status").html( "" );
$.ajax({
url: "update.php",
data: {
val: value,
col: column,
id: linked_col,
id_val: linked_val
},
type: "POST",
success: function(html) {
$("#Status").html( html );
}
});
});
});
});
9/22 - 缩短的 script.js
$(document).ready(function() {
$('form').submit(function(evt) {
evt.preventDefault();
$.each(this, function() {
$("#Result").html( "" );
$.ajax({
url: "update.php",
data: $('form').serialize(), // works to post data
type: "POST",
success: function(html) {
$("#Result").html( html );
}
});
});
});
});
评论 - 我测试过,似乎使用 serialize 发布的数据与创建 var serializedData = $(this).serialize() 之类的变量并发布变量的数据相同,但这更短。
最佳答案
也许你应该
$('form').submit(function(evt) {
// Serialize the data in the form
var serializedData = $(this).serialize();
//send off serializedData in your ajax
}
然后
php脚本会有
$data=json_decode($_POST['data']);
新方式
$.ajax({
url: "update.php",
data: {'data': $('form').serialize()}, // works to post data
type: "POST",
success: function(html) {
$("#Result").html( html );
}
关于php - 无法获取 Ajax 更新表单以使用反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39604513/