我将带有$ .post的序列化表单发送到Controller PHP:
$.post('/Controller.php',
{
action: 'register',
data: $('#regForm').serialize()
},
function(msg){
if(parseInt(msg.status)==1)
{
window.location=msg.txt;
}
else if(parseInt(msg.status)==0)
{
error(1,msg.txt);
}
hideshow('loading',0);
},
"json"
);
我现在希望能够通过$ _POST ['fieldname']访问表单字段 但反而 我在$ _POST ['data']中有一个Get like参数字符串-.-我做错了什么?
答案 0 :(得分:1)
它正如您所说的那样发送数据。 .serialize()
创建了一个“查询字符串”,您将其添加到$_POST['data']
。
而不是你拥有的,试试这个:
var formData = $('#regForm').serialize();
var extraFields = {action: 'register'};
$.post('/Controller.php', $.param(extraFields)+'&'+formData, function(msg){
if(parseInt(msg.status)==1)
{
window.location=msg.txt;
}
else if(parseInt(msg.status)==0)
{
error(1,msg.txt);
}
hideshow('loading',0);
}, 'json');
现在您应该可以获得$_POST['action']
和$_POST['fieldname']
。
答案 1 :(得分:0)
$ .post格式如下:
jQuery.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )
所以你的第一个参数是url正确,第二个参数是数据。这就是为什么你将$ _POST ['data']和$ _POST ['action']作为post参数,因为你确实发送了两个url参数'action'和'data'。你可以这样做并直接将表格作为数据发送:
$.post('/Controller.php',
$('#regForm').serialize(),
function(msg){
if(parseInt(msg.status)==1)
{
window.location=msg.txt;
}
else if(parseInt(msg.status)==0)
{
error(1,msg.txt);
}
hideshow('loading',0);
},
"json"
);
然后你会得到你要求的东西,$ _POST ['fieldname']
答案 2 :(得分:0)
确保表单中的输入字段分配了name
属性,否则jQuery将无法正确发送数据。
另一种选择是使用serializeArray
。两个has been discussed here.
$.post('/Controller.php',
{
action: 'register',
data: $('#regForm').serializeArray()
},
function(msg){
if(parseInt(msg.status)==1)
{
window.location=msg.txt;
}
else if(parseInt(msg.status)==0)
{
error(1,msg.txt);
}
hideshow('loading',0);
}
)