jq.$post传递参数给php,jquery的$.ajax() 提交到php的post的数据不对

$('#form1').submit(function(){

$.ajax({

url:'login.php?act=login',

data:$('#form1').serialize(),

type:'POST',

dataType:'text',

beforeSend:function(){

}

if($('#password').val()==''){

alert('密碼不能為空');

return false;

}else{

var p = $('#password').val();

alert(p);

$('#password').val(hex_md5(p));

alert($('#password').val());

}

},

success:function(msg){

......

};

}

});

return false;

});

是这样,我的目的是,在提交之前,对密码进行md5计算,达到加密传输密码的作用。

可是实际的效果是,当我password值为123的时候,alert($('#password').val()) 打印出来是对的202cb962ac59075b964b07152d234b70 ,可是post到后台php之后,还是123 。

我感觉像是data:$('#form1').serialize()已经在beforeSend之前取值了,所以传到后面还是旧值。

经过测试,如果我把md5加密那一块拿出来,放到$.ajax()之前进行操作,是没有问题的。只是这样用起来不方便,有没办法让serialize()在beforSend之后执行呢?

补充:

在使用后贴@lisfan 提供的方法后,提交正常了

$('#form1').submit(function(){

$.ajax({

url:'login.php?act=login',

**data:null,**

type:'POST',

dataType:'text',

beforeSend:function(){

}

if($('#password').val()==''){

alert('密碼不能為空');

return false;

}else{

var p = $('#password').val();

alert(p);

$('#password').val(hex_md5(p));

alert($('#password').val());

**this.data=$('#form1').serialize();**

}

},

success:function(msg){

......

};

}

});

return false;

});

但是后台php的$_REQUEST和$_POST都收不到数据。如下图:

6e3125b43db1f5bc9923d3e53af4b75e.png

下面是firebug看到的post数据,上面是php分别print $_REQUEST、$_POST和php://input的数据, 可以看到在file_get_contents("php://input")中是看到了原始数据的,但是为啥没有被封装到$_POST中去呢?

.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值