jQuery ajax serialize() 提交表單資料

來源:互聯網
上載者:User

jQuery ajax中資料以索引值對(Key/Value)的形式發送到伺服器,使用ajax提交表單資料時可以使用jQuery ajax的serialize() 方法表單序列化為索引值對(key1=value1&key2=value2…)後提交。serialize() 方法使用標準的 URL-encoded 編碼錶示文本字串。下面是使用serialize()序列化表單的執行個體:

jQuery ajax原型:

 代碼如下 複製代碼

$.ajax({
   type: "POST",
   url: ajaxCallUrl,
   data: "Key=Value&Key2=Value2",
   success: function(msg){alert(msg);}
 });

ajax serialize():

 代碼如下 複製代碼

$.ajax({
         type: "POST",
         url:ajaxCallUrl,
         data:$('#formID').serialize(),// 要提交的表單
         success: function(msg) {alert(msg);}
     });

serialize()序列化表單一實例:

 代碼如下 複製代碼

<script type="text/javascript" src="/demo/jquery/jquery-1.7.2.min.js"
></script>
<script type="text/javascript">
$(document).ready(function(){
   $("#button").click(function(){
     alert($("#myForm").serialize());
   });
});
</script>
<form id="myForm">
    姓名 <input value="liming" name="Name" /><br />
    職位 <input value="CEO" name="position" /><br />
        <input id="button" value="序列化表單" type="button" />
</form>

ajax serialize執行個體

 

 代碼如下 複製代碼

var timer;
//驗證手機號
function getVerify(){
 if($('#regRuser').val()){
  var m=$('#regRuser').val();
  if(/^13d{9}$/g.test(m)||(/^15[0-35-9]d{8}$/g.test(m))|| (/^18d{9}$/g.test(m))){
   var postData = $('#reg_form').serialize();
   $.ajax({
    type: "POST",
    url: "/ajax/getVerify",
    data: postData,
    success: function(msg){
     if(msg>0){
      alert('驗證碼已發送至您手機,請注意查收');
      $('#getVerify').hide();
      $('.regnav').css('background','url(/static/images/v10/regnav2.png)');
      $('#checkvalidate').show();
      f_timeout();
      $('.abc').show();
     }else if(msg==-1){
      alert('一分鐘內只能收取一次驗證碼');
     }
    }
   });
  }else{
   alert('請輸入正確的手機號');
  }
 }
}

function f_timeout(){
 
 $('#timeb1').html('<span id="timeb2">60</span>秒後重新擷取');
 $('#timeb1').click(function(){});
 timer = self.setInterval(addsec,1000);

}

function addsec(){
 
 var t = $('#timeb2').html();
 //alert(t);
 if(t > 0){
  
  $('#timeb2').html(t-1);
  //alert(t);
 }else{
  
  window.clearInterval(timer);
  $('#timeb1').html('<span id="timeb2"></span>重新擷取驗證碼');
  $('#timeb1').click(function(){getVerify();});
 }
 
}

html頁面

 代碼如下 複製代碼


 <form id="reg_form" name="reg_form" method="post" onsubmit="return false;">
      <input value="" name="regCyqnumber" type="hidden" id="regCyqnumber">
               <ul>
                   <li><span class="txt_name">手機號碼:</span><input class="input_user"  onblur="if(this.value=='') this.value='';" onfocus="if(this.value=='') this.value='';" value="" name="regRuser"  type="text"    id="regRuser"></li>
                   <li><span class="txt_name">手機驗證碼:</span><span class="code"  onclick="getVerify();" id="timeb1" style="cursor:pointer">免費擷取驗證碼</span><input class="input_code"  onblur="if(this.value=='') this.value='';" onfocus="if(this.value=='') this.value='';" value="" type="text"  name="verifyCode"  id="verifyCode" ></li>
                   <li><span class="txt_name">登入密碼:</span><input class="input_user"  onblur="if(this.value=='') this.value='';" onfocus="if(this.value=='') this.value='';" value="" id="regRpass"  name="regRpass" type="password"></li>
                   <!--<li>
      
       <span class="txt_name">驗證碼:</span>
       <div class="yz_code">
       <span class="code1"   style="cursor:pointer"> <img src="/static/scode.php" title='換一個驗證碼試試'   onclick="this.src='/static/scode.php?id='+Math.random()" /></span>
       <input class="input_yzcode" autocomplete="off" onblur="if(this.value=='') this.value='';" onfocus="if(this.value=='') this.value='';" value="" type="text"  name="scode"  id="scode" >
                  </div></li>-->
     
                   <li class="reg">
                    <input type="hidden" value="1" name="regCityiD">
       <button type="submit" title="註冊" class="button_login_index">註冊</button>
       </li>
      
        <li class="regs"><span class="hwlogin">您登入,<a href="/reg/login" target="_blank">點擊登入</a>,<a href="/reg">完整註冊</a></span></li>
              
     </ul>
      </form>

可能碰到的問題JQuery Ajax提交表單資料時的問題

表單中如果提交的資料量比較大的情況,在IE瀏覽器下會提示“未知名稱”資料提交不了,
一開始以為是加了data : $("#myformId").serialize(),這個的問題,檢查了表單中提交的文本都是否有name屬性;
後來在FireFox下不再報錯,但IE下仍報“未知名稱”的問題,於是懷疑是資料量過大,應該採用POST方式提交,所以在下面加上type: "POST", 這句就可以了。。
所以在做JQUERY ajax提交表單資料的時候一定要注意:
1.表單的文字框等要有name屬性,並與後台接收的對應
2.注意提交的方式

代碼如

 代碼如下 複製代碼

function toSaveOutList(){
$.ajax({
    url: "InOrderAction!saveOutPickInOrder.action",   //提交的action
data : $("#myformId").serialize(),// 從表單中擷取資料 dataType: "json", //返回json格式的資料   type: "POST",                   // 佈建要求類型為"POST",預設為"GET"
error: function(request) {      // 設定表單提交出錯
            jAlert('warning', "提交出錯,請稍候再試", '提示');
        },
        success: function(json) { // 設定提交完成使用方法
                if(json[0].result=='success' && json[0].errorMessage==null){
                    jAlert('warning', '提交成功', '提示', function(r){
                        if(r)
                            location.href="InOrderAction!toOutPickInOrder.action";
                    });
                }else{
                    jAlert('warning', json[0].errorMessage, '提示');
                }
        }
});
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.