我有登录表单,我希望通过ajax使用serialize发送,但是它的发送数据格式错误,如此
Array
(
[form] => uname=as
[upass] => amitpatilasas
[action] => login
)
此HTML
<form action="#" method="post" name="login" id="login" rel="external" class="ui-corner-all">
<div data-role="fieldcontain">
<input type="text" name="uname" id="uname" value="" placeholder="Username" />
</div>
<div data-role="fieldcontain">
<input type="password" name="upass" id="upass" value="" placeholder="Password" />
</div>
<div class="ui-body ui-body-b">
<fieldset class="ui-grid-a">
<div class="ui-block-a"><button type="button" id="cancel" data-theme="d">Cancel</button></div>
<div class="ui-block-b"><button type="button" id="dologin" data-theme="a">Login</button></div>
</fieldset>
</div>
</form>
这是javascrip
$.ajax({
type: "POST",
url: "server.php",
data: "form="+$("#login").serialize()+"&action=login",
success: function(responce){
答案 0 :(得分:2)
删除"form="+
部分。然后它会工作。
$.ajax({
type: "POST",
url: "server.php",
data: $("#login").serialize()+"&action=login",
success: function(responce){
至少它会给你这个输出;
Array
(
[uname] => as
[upass] => amitpatilasas
[action] => login
)
答案 1 :(得分:0)
您的代码:
"form="+$("#login").serialize()+"&action=login"
鉴于someuser
和somepassword
,会发送此数据:
形式= UNAME = SomeUser是否&安培; upass = somepassword&安培;动作=登录
注意双等号,这是错误的,这就是你得到错误的原因。如果删除form=
部分,那么您将获得正确的查询字符串。
然而,在消息的 body 中发送查询字符串参数而不是URL是很奇怪的。以这种方式构建代码更有意义:
var loginUrl = "server.php"
+ "?"
+ $("#login").serialize()
+ "&action=login"
;
$.ajax({
type: "POST",
url: loginUrl,
success: function(response){
// ...
},
error: function(response){
// ...
}
);
...或者以JSON而不是查询字符串参数的身份发送。