jquery form $.post提交的一些问题,望指教

时间:2022-09-12 11:08:10

对应js处理页面:
   /**
 * 
 */
$(function() {//加载完后处理页面
 //alert($("#faceimg").attr("src")) ;
 $("#faceimg").click(function(){
  window.open('face.php','face','width=400,height=400,top=0,left=0,scrollbars=1');
 });
 
  $("#mycheckcode").click(
  function(){
     var url="includes/code.php?aa="+Math.random();
     $("#mycheckcode").attr("src",url);
     
    }
  );
  /***
  //输入的每个值都要以post的方法放到data里面
  var adata='';
  $("input").each(
   function(){
     adata+=$(this).attr('name')+"="+$(this).val()+"&";
   }
  );
 
 
 
  $.ajax({
    type: "POST",//提交的方式 
    url: "registerProcess.php",//提交对应的页面
    dataType: "json",//返回的是什么格式
    data:adata,//post过去的data
    fail:function(msg){
     //失败处理函数
    },
    success:function(){
      //成功处理函数
    
    }
}); 
 **/
  //作验证
   //如果是必填的,则加红星标识.
$("form :input.required").each(function(){
var $required = $("<strong class='high'> *</strong>"); //创建元素
$(this).parent().append($required); //然后将它追加到文档中
});
         //文本框失去焦点后
    $('form :input').blur(function(){
 var $parent = $(this).parent();
 $parent.find(".formtips").remove();
 //验证用户名
 if( $(this).is('#username') ){
if( this.value=="" || this.value.length < 6 ){
    var errorMsg = '请输入至少6位的用户名.';
                        $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
}else{
var username = {"username":$(this).val()}; //json格式传过处理页面
                        var changeurl = "action/UserAction.php?act=IsExistUserName&flg=ling"; 
                        //用Post的方式 提交过去,验证用户名是否存在 
                        $.post(changeurl,username,function(res){//成功返回值 
                            if(res==1){
                             var errorMsg ="用户名好受欢迎哦,再试下其他的吧";
                                $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
                            }else{
                                 var okMsg ="用户名可用.";
                                $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
                            }
                        });
}

 }
 //验证密码长度
 if($(this).is("#password")){
    if(this.value==""||this.value.length<2){
        var errorMsg = '请输入至少2个字符的密码.';
                      $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
    }else{
    var okMsg = '输入正确.';
    $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
}
  
    
  }
  //验证两次密码是否一致
  if($(this).is('#repassword')){
   if(this.value==""||this.value.length<2){
        var errorMsg = '请输入至少2个字符的密码.';
                      $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
    }else{
     var password=$("#password").val();//取到密码的值
       if(this.value!=password){
      var errorMsg = '两次密码输入不一致.';
                      $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
  }else{
    var okMsg = '输入正确.';
    $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
}
    }
  }
  
  //密码问题和密码提示要至少2个字符
  if($(this).is("#passtips")||$(this).is("#passans")){
    if( this.value=="" || this.value.length < 6 ){
    var errorMsg = '请输入至少2位.';
                        $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
}else{
    var okMsg = '输入正确.';
    $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
}
  }
  
 //验证邮件
 if( $(this).is('#email') ){
if( this.value=="" || ( this.value!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value) ) ){
                      var errorMsg = '请输入正确的E-Mail地址.';
  $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
}else{
                      var okMsg = '输入正确.';
  $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
}
 }
 
 //验证qq
  var qq=/[1-9][0-9]{4,}/ ;
 if($(this).is("#qq")){
   if(qq.test(this.value) ){
           var okMsg = '输入正确.';
  $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
   }else{
        var errorMsg = '请输入正确的QQ.';
$parent.append('<span class="formtips onError">'+errorMsg+'</span>');
   
   }
 }
 //验证地址
 var url=/^https?:\/\/(\w+\.)?[\w\-\.]+(\.\w+)+$/ ;
  if($(this).is("#url")){
   if(url.test(this.value) ){
           var okMsg = '输入正确.';
  $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
   }else{
        var errorMsg = '请输入正确的地址格式.';
$parent.append('<span class="formtips onError">'+errorMsg+'</span>');
   
   }
 }
if($(this).is("#code")){
   var url="includes/getSession.php";
   $.post(url, {'sessionName':this.name,'value':this.value},function(res){
          if(res==1){
                  var okMsg ="输入正确";
                                $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
                            
                            }else{
                                var errorMsg ="验证码不正确";
                                $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
                          
    }
   });
   
}
}).focus(function(){//重新操作时重新赋值事件
      $(this).triggerHandler("blur");//绑定处理事件
});
/**这部分个人感觉有点多了
.keyup(function(){
   $(this).triggerHandler("blur");
}).focus(function(){
      $(this).triggerHandler("blur");
});**///end blur


//提交,最终验证。
 $('#send').click(function(){
$("form:input.required").trigger('blur');
var numError = $('form .onError').length;
if(numError){
return false;

var url="registerProcess.php";
//var data={'username':$("#username").val(),'password':$("#password").val(),'repassword':$("#repassword").val(),'passtips':$('#passtips').val(),'passans':$("#passans").val(),
// 'email':$("#email").val(),'qq':$("#qq").val(),'sex':$(":input[name='sex'][checked]").val(),'url':$("#url"),'faceimg':$("#faceimg").attr("src")};
   
$.post(url,$("#myform").serialize(),function(res){
if(res==1){
   alert("注册成功,请进入登录界面");
}else{
  alert("没有成功");
}
   
});

 });

//重置
 $('#res').click(function(){
$(".formtips").remove(); 
 });
  
  
});


而处理form表单处理页面registerProcess.php
   <?php
//处理register过来的内容

if(!defined('IN_TG')){
exit('Access Defined');
}
//唯一标识 md5(uniqid(rand(),true));32位   更历害的可以是40位的 sha1(uniqid(rand(),true));
require_once ROOT_PATH.'includes/common.inc.php';
require_once ROOT_PATH.'model/userservice.class.php';
$hCon=new stdClass();//设置一个对象
$hCon->uniqid=$_SESSION['uniqid'];
$hCon->active=$_SESSION['active'];
$hCon->username=trim($_POST['username']);//去掉空格
$hCon->password=md5($_POST['password']);//密码加密
$hCon->repassword=md5($_POST['repassword']);
$hCon->question=_mysql_string($_POST['passtips']);//去掉转义字符 
$hCon->answer=_mysql_string($_POST['passans']);
$hCon->sex=_mysql_string($_POST['sex']);
$hCon->face=_mysql_string($_POST['faceimg']);
$hCon->qq=$_POST['qq'];
$hCon->url=_mysql_string($_POST['url']);
$hCon->email=_mysql_string($_POST['email']);
session_start();
if($hCon->uniqid!=$_SESSION['uniqid']){
  _alert_back("防止恶意提交表单");
}
$userservice=new CUserService();
$res=$userservice->addUser($hCon);
print $res;




这里处理完js前端的验证后提交却一直在原来页面刷新,也不进入挖掘$.post后的处理事件,请问是哪一步出了问题。初学jquery整合php,望大仙指教啊。。。
   

4 个解决方案

#1


先定位问题:
1 有错误提示没有,有错误的话,有任何异常都是合理的
2 运行到了提交那步了没有,可在post前alert(123)
3 post方法你用对了没有,是否要设置格式,(serialize()我从来不用,都把值取出来顺便前台检查一下)
我处理方法是,用ajax post json数据,你发的东西不够测试,自已使劲调,定位问题是核心内容

#2


$.post(url, {'sessionName':this.name,'value':this.value}试试post里的data名不加引号
$.post(url, {sessionName:this.name,value:this.value},

还有,测试最好用submit,或者.php?ss=1带参数的样式 进行测试。

#3


该回复于2012-08-02 11:05:17被版主删除

#4


$.post(url,$("#myform").serialize(),function(res){
if(res==1){
alert("注册成功,请进入登录界面");
}else{
alert("没有成功");
}

这里面第二个参数应该是你自己定义的 data

你可以装个firefox浏览器,在装一个firebug插件。
用firebug的“网络”查看你的请求发出去没有, 返回值是什么。

#1


先定位问题:
1 有错误提示没有,有错误的话,有任何异常都是合理的
2 运行到了提交那步了没有,可在post前alert(123)
3 post方法你用对了没有,是否要设置格式,(serialize()我从来不用,都把值取出来顺便前台检查一下)
我处理方法是,用ajax post json数据,你发的东西不够测试,自已使劲调,定位问题是核心内容

#2


$.post(url, {'sessionName':this.name,'value':this.value}试试post里的data名不加引号
$.post(url, {sessionName:this.name,value:this.value},

还有,测试最好用submit,或者.php?ss=1带参数的样式 进行测试。

#3


该回复于2012-08-02 11:05:17被版主删除

#4


$.post(url,$("#myform").serialize(),function(res){
if(res==1){
alert("注册成功,请进入登录界面");
}else{
alert("没有成功");
}

这里面第二个参数应该是你自己定义的 data

你可以装个firefox浏览器,在装一个firebug插件。
用firebug的“网络”查看你的请求发出去没有, 返回值是什么。