前端 jquery-ajax 的简单案例分析和总结

ajax+jquery实现简单的数据交互 今天有人问我前端是如何数据交互的,在我刚开始接触的一段时间里面,我也很迷惑 经常听别人说,感觉很高大上,现在回过头来 也就那么一回事,废话不多说  现在我们来看看前端数据交互 这里我们采用jquery的ajax  还有json数据 1.建立一个web工程 demo-ajax 2.导入jquery  至于版本1.7以上的就行了  看你喜好 3.建立一个模拟数据failLoad.json 阅读详情

ajax,顾名思义:异步的 JavaScript 和 XML。在不重新加载整个页面的情况下,AJAX 是与服务器交换数据并更新部分网页的艺术。ajax特别适合用在那些需要不刷新页面形式一定功能的页面中,在目前网页编写中,是绝对不可获取的。

这几日做了一些ajax实例与大家分享,内容比较长,讲的比较细,如有不足之处,还望指正。

项目中,用到多个ajax实例,这里我选了2个:

(一)跳页面(夹带数据)的ajax二级联动和提交显示

1.主页中,用户选择一级下拉菜单内容,动态生成二级菜单内容(二级联动)

2.用户点击按钮提交搜索,页面跳转一个子页面a,并夹带主页选择的联动下拉菜单内容数据。

3.子页面a中,页面a中央的二级联动部分同步显示主页中用户选择的内容

4.同时在子页面a规定板块中动态加载用户在主页行使的搜索内容。

5.用户在子页面a中,可以正常选择一级菜单,正常生产二级菜单,并且随着选择的进行,在下方规定的板块中动态生产对应的内容。

6.用户在浏览器点击前进、后退,再返回a页面,或者在浏览器手动输入地址,都能默认显示选择好的二级联动菜单和动态生产的内容。

(二)同页面(无刷新)的form表单ajax提交

1.当前页面中,用户在表单中选择相应内容,点击搜索按钮,页面不刷新生成搜索内容(即:利用ajax的form表单下的submit不刷新提交)

2.做好简单的表单验证,清空表单以及搜索返回功能。

这两个案例基本上可以带你入门ajax,在项目中能完成大部分的需求功能,好,下面我们开始第一块内容。

一、跳页面(夹带数据)的ajax二级联动和提交显示

完成效果如下:

主页 如下:


子页面 如下:


1.html内容:


 
<form>
   <span class="teach_word">Schools list:</span>
   <select id="region" name="region" οnchange="ajax_index_Upload(this.value);">
      <option value="Eastern China" selected>Eastern China</option>
      <option value="Southwestern China">Southwestern China</option>
      <option value="North &amp; NW China">North &amp; NW China</option>
      <option value="Southern &amp; Central">Southern &amp; Central</option>
      <option value="Northeastern China">Northeastern China</option>
      <option value="Others">Others</option>
   </select>
   <select name="provinces" id="provinces" οnchange="get_linkage_val()">
      <!--<option value="zhejiang">Anhui</option>-->
   </select>
   <a href="/dede/a/Teach_in_China" style="margin-left:370px;">
      <input class="teach_sub" type="button" value="search">
   </a>
</form>



2.搭建ajax框架

ajax的基本结构和基本用法就不叙述了,链接:http://www.w3school.com.cn/jquery/ajax_ajax.asp

这里我只用ajax去实现案例一,不用form表单,submit提交的方式。首先是二级联动,这里,我一级下拉菜单是写死的,二级菜单,动态生成,用onchange事件去触发,如下结构:


   
function ajax_index_Upload( val )
{
   var $region = $( "#region" );
   var $provinces = $( "#provinces" );
   $.ajax( {
      type: "POST",
      dataType: "json",
      url: "/dede/templets/default/china_city.php",
      data: {
         "region": val
      },
      success: function( data ){},
      error: function( XMLHttpRequest, textStatus )
      {
         alert( XMLHttpRequest.status );
         alert( XMLHttpRequest.readyState );
         alert( textStatus );
      }
   } );
}

3.在success里写上生成option的语句

代码:var$option=$("<option value="+ data[ i].provinces+">"+ data[i].provinces+"</option>");

再添加到select中:$provinces.append($option);

每次改变一级下拉菜单时,在新增option时,都要先清空二级内容,:$provinces.empty();

这里注意一下:若是error报错:parsererror。则原因可能为返回类型的问题。

  • 在后台php中加上  header('Content-type:application/json');这句话。
  • 还有一种可能是,你的表单和ajax发生了混乱,导致了ajax不能正常的提交,检查一下你的提交按钮submit以及表单form是否符合要求,原则上ajax和form表单提交之间没什么影响,不排除少量极端影响,所以首先要搞清楚ajax提交和form表单提交的区别,这里我不展开了,链接:http://www.3lian.com/edu/2014/02-17/129057.html 

4.可根据实际要求,设置async:false

ajax变为同步请求,并锁住浏览器,其他操作必须等待请求完成时才可以执行。再设置一个参数flag,以控制在极端状况下Ajax不会重复提交,在ajax开始之前做个布尔判断,符合要求则开始请求,当success里回调函数全部完毕后,把参数布尔值取反,并跳出请求,当然我这里可以不这么操作,建立一个全局变量,再做判断也可以。

5.增加了对响应时间的操作

若响应时间大于一定值时,则停止请求。


    
timeout: 1000,


     
complete: function( XMLHttpRequest, status )
{
   //Timeout, and  status is success, error equivalents
   if( status == 'timeout' )ajaxTimeOut.abort();          //Cancel request
},

我这里全是ajax操作,如实请求时间超时,好歹也就不出结果,不会想form表单提交中断时出现页面断章一片白的结果。

6.跳转页面的传值

点击a标签直接链接跳转过去,如何把主页二级联动选择的数据传递过去是个问题。这里我有n种方法可以传递,比如:

(1)ajax,
(2)form表单action携带参数
(3)window.location携带参数
(4)cookie传值
(5)url 传值
(6)利用闭包实现传参
(7)sesionstorage 方法
(8)localstarage方法

这里重点提一下cookie,localstarage和sesionstorage,首先它们的区别在于:

  • cookie:cookie数据始终在同源的http请求中携带,即cookie在浏览器和服务器间来回传递,cookie只适合保存很小的数据
  • sesionstorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持,存储大小的限制大于5m,从IE浏览器从IE8开始支持,HTML5的新特性
  • localstarage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据,存储大小的限制大于5m,从IE浏览器从IE8开始支持。

考虑到传的参数本身是一个变量,且要保持兼容性和灵活性,故我这里采用 localstarage+cookie 的方法:


      
function get_linkage_val()
{
   //localStorage clear all
   localStorage.clear();
   //storage,IE6 ~ 7 use cookie /   Other browsers use HTML5localStorage
   if( window.localStorage )
   {
      localStorage.setItem( "index_link_val1", $( "#region" ).val() );
      localStorage.setItem( "index_link_val2", $( "#provinces" ).val() );
   }
   else
   {
      Cookie.write( "index_link_val1", $( "#region" ).val() );
      Cookie.write( "index_link_val2", $( "#provinces" ).val() );
   }
}

并且,在ajax请求成功后调用get_linkage_val函数,去存储参数值,在每次使用时,都清理本地存储。

7.完整ajax请求如下

       
/*
 * ajax upload
 * linkage index : When user selects the first drop-down option in index
 * type : post
 * used for linkage in index helen English website(http://en.chinatefl.com/)
 * create by 西兰花的春天(gcx)高 on 2017/1/18.
 */
function ajax_index_Upload( val )
{
   var $region = $( "#region" );
   var $provinces = $( "#provinces" );
   /* Set a parameter, in order to control ajax will not be submitted repeatedly
    No other operations are performed until a request is completed */
   var flag = true;
   if( flag )
      $.ajax( {
         type: "POST",
         dataType: "json",
         url: "/dede/templets/default/china_city.php",
         async: false,
         timeout: 1000,
         data: {
            "region": val
         },
         success: function( data )
         {
            $region.val( data[ 0 ].region );          //set $region’s value = the first of data.region
            //select $provinces / option
            $provinces.empty();
            //Dynamically generated drop - down list
            for( var i = 0; i < data.length; i++ )
            {
               var $option = $( "<option value=" + data[ i ].provinces + ">" + data[ i ].provinces + "</option>" );
               $provinces.append( $option );
            }
            //get #region and #provinces value
            get_linkage_val();
            flag = false;
         },
         complete: function( XMLHttpRequest, status )
         {
            //Timeout, and  status is success, error equivalents
            if( status == 'timeout' )ajaxTimeOut.abort();          //Cancel request
         },
         error: function( XMLHttpRequest, textStatus )
         {
            alert( XMLHttpRequest.status );
            alert( XMLHttpRequest.readyState );
            alert( textStatus );
         }
      } );
   if( !flag )return false
}

对了,别忘了在主页index加载时就要生成二级联动:

        
$( document ).ready( readyHandler );

function readyHandler()
{
   ajax_index_Upload( 'Eastern China' );   // Initial display
}

8.获取存储的参数

至此大部分问题已经解决,跳转页面后,首先要去获取存储的参数,并且要在页面生成二级联动和相关搜索信息,


         
//get localStorage
var $region_val = window.localStorage ? localStorage.getItem( "index_link_val1" ) : Cookie.read( "index_link_val1" );
var $provinces_val = window.localStorage ? localStorage.getItem( "index_link_val2" ) : Cookie.read( "index_link_val2" );

9.跳转页面生成二级联动和搜索内容

直接放代码了,这里解释一下,第一个传入参数,主要作用是生成二级联动,配合第二个参数可以去查表生成搜索结果内容。


          
/*
 * ajax upload  (linkage  Executes when the page is refreshed)
 * belong to teaching_in_china web
 * type : post
 * used for linkage in teaching_in_china helen English website(http://en.chinatefl.com/)
 * create by 西兰花的春天(gcx)高 on 2017/1/18.
 */
function ajax_teach_Upload( val1, val2 )
{
   //get localStorage
   var $region_val = window.localStorage ? localStorage.getItem( "index_link_val1" ) : Cookie.read( "index_link_val1" );
   var $provinces_val = window.localStorage ? localStorage.getItem( "index_link_val2" ) : Cookie.read( "index_link_val2" );
   var $t_region = $( "#t_region" );
   var $t_provinces = $( "#t_provinces" );
   $.ajax( {
      type: "POST",
      dataType: "json",
      url: "/dede/templets/default/china_city.php",
      timeout : 1000,                         //Timeout setting
      data: {
         "region": val1,
         "provinces": val2
      },
      success: function( data )
      {
         $t_provinces.empty();                 //select $t_provinces / option
         for( var i = 0; i < data.length; i++ )
         {
            var $option = $( "<option value=" + data[ i ].provinces + ">" + data[ i ].provinces + "</option>" );
            $t_provinces.append( $option );
         }
         //show school content in teaching_in_china web
         ajax_teach_school( data[ 0 ].region, $t_provinces.val() )
      },
      complete : function(XMLHttpRequest,status)
      {
         //Timeout, and  status is success, error equivalents
         if( status == 'timeout' )ajaxTimeOut.abort();          //Cancel request
      }
   } );
}

在success里,二级联动生成后,需要调用ajax_teach_school(data[
 0 ].region, $t_provinces.val())来生成搜索内容,第一个参数为返回参数的region值,第二个参数为$t_provinces.val() 的值,可以说,这两个值都来源于ajax_teach_Upload(
  )处理后的结果。
10.判断页面访问的途径

第一种情况:页面是从主页跳出,夹带着搜索的参数过来,要在页面生成相应内容。

第二种情况:页面是从其他页面跳入,或者是用户手动输入地址访问,没有夹带着搜索的参数过来,需要在页面生成默认的内容。

故需要在页面加载readyHandler()时对夹带参数做一个判断:


           
$region_val && $provinces_val ?
   //show linkage in teaching_in_china web               //Default load
   ajax_teach_Upload( $region_val, $provinces_val ) : ajax_teach_Upload( 'Eastern China', 'Zhejiang' );

同时,我们在ajax_teach_Upload( )里ajax请求成功生成二级联动时,需要对夹带的参数类型进行判断,在二级联动里selected不同的内容。


             
 	//set $t_region and $t_provinces value
         if( $region_val && $provinces_val )    //other web into this web
         {
            $t_region.val( data[ 0 ].region );    //show index select val in teach_in_china web's linkage
            $t_provinces.val( $provinces_val );
         }
         else     //index into this web
         {
            $t_region.val( 'Eastern China' );   //show  Default val
            $t_provinces.val( 'Zhejiang' );
         }

11.搜索内容生成的请求

这里我直接代码了,没什么难度,值得注意的是,需要在success末尾加上:


             
//localStorage clear all
localStorage.clear();

目的生成好搜索结果之后,清空本地存储一次,因为当当前页面点击链接访问其他页面,再返回时,存储的两个参数若是不清零,再返回时会造成二级联动ajax请求不能正常显示,没有按照我的要求去执行默认请求。

              
/*
 * ajax upload (school content)
 * belong to teaching_in_china web
 * show school content in teaching_in_china web
 * type : post
 * used for linkage in teaching_in_china helen English website(http://en.chinatefl.com/)
 * create by 西兰花的春天(gcx)高 on 2017/1/18.
 */
function ajax_teach_school( val1, val2 )
{
   $.ajax( {
      type: "POST",
      dataType: "json",
      url: "/dede/templets/default/china_school_list.php",
      timeout : 1000,
      data: {
         "region": val1,
         "provinces": val2
      },
      success: function( data )
      {
         var $text_ajax = $( '#text_ajax' );
         $text_ajax.empty();                 //clear  all
         var $ul = $( "<ul></ul>" );
         for( var i = 0; i < data.length; i++ )
         {
            var $li = $( "<li class='teachcn_list_li clear'>" +
                      "<span class = 'teachcn_pic fl'>" + "</span >" +
                      "<div class='teachcn_listtit fl'>" +
                      "<span class='teachcn_listpic fl'>" + "CTN" + "</span>" +
                      "<a class='teachcn_listtitle fl' href ='/dede/templets/default/detail.php?id=" + data[ i ].mid + "'>" + data[ i ].school_name + "</a>" +
                      "</div>" +
                      "<p class='teachcn_listcont fl'>" +
                      "<span class='teachcn_provinces fl'>" + "Teach in " + data[ i ].province + "</span>" +
                      "<span class='teachcn_provinces fl'>" + "&nbsp|&nbsp" + "</span>" +
                      "<span class='teachcn_listcontc fl'>" + data[ i ].area + "</span>" +
                      "<span class='teachcn_provinces fl'>" + "&nbsp|&nbsp" + "</span>" +
                      "<span class='teachcn_listcontl fl'>" + data[ i ].school_type + "</span>" +
                      "</p>" +
                      "<span class='teachcn_star fl " + "vip" + data[ i ].vip + "'>" + "</span>" +
                      "</li>" );
            $ul.append( $li );
            $text_ajax.append( $ul );
         }
         //localStorage clear all
         localStorage.clear();
      },
      complete : function(XMLHttpRequest,status)
      {
         //Timeout, and  status is success, error equivalents
         if( status == 'timeout' )ajaxTimeOut.abort();          //Cancel request
      }
   } );
}

12.在子页面选择二级联动时ajax请求

这里要分两种情况:

(1)改变第一级下拉菜单时,ajax主要任务是去生成二级菜单和刷新下方搜索内容

(2)改变第二级下拉菜单时,ajax主要任务是去刷新下方搜索内容

故,我这里分成两个函数写,代码如下:


               
/*
 * ajax upload (linkage  When user selects the first drop-down option)
 * belong to teaching_in_china web
 * type : post
 * used for linkage in teaching_in_china      helen English website(http://en.chinatefl.com/)
 * create by 西兰花的春天(gcx)高 on 2017/1/18.
 */
function ajax_teach_1st_change( val )
{
   var $t_region = $( "#t_region" );
   var $t_provinces = $( "#t_provinces" );
   /* Set a parameter, in order to control ajax will not be submitted repeatedly
    No other operations are performed until a request is completed */
   var flag = true;
   if( flag )
      $.ajax( {
         type: "POST",
         dataType: "json",
         url: "/dede/templets/default/china_city.php",
         timeout: 1000,
         async: false,
         data: {
            "region": val
         },
         success: function( data )
         {
            $t_region.val( data[ 0 ].region );          //set $region’s value = the first of data.region
            //select $provinces / option
            $t_provinces.empty();
            //Dynamically generated drop - down list
            for( var i = 0; i < data.length; i++ )
            {
               var $option = $( "<option value=" + data[ i ].provinces + ">" + data[ i ].provinces + "</option>" );
               $t_provinces.append( $option );
            }
            //show school content in teaching_in_china web
            ajax_teach_school( $t_region.val(), $t_provinces.val() );
            flag = false;
         },
         complete: function( XMLHttpRequest, status )
         {
            //Timeout, and  status is success, error equivalents
            if( status == 'timeout' )ajaxTimeOut.abort();          //Cancel request
         }
      } );
   if( !flag )return false
}


                
/*
 * ajax upload (linkage  When user selects the second drop-down option)
 * belong to teaching_in_china web
 * type : post
 * used for linkage in teaching_in_china      helen English website(http://en.chinatefl.com/)
 * create by 西兰花的春天(gcx)高 on 2017/1/18.
 */
function ajax_teach_2st_change( val1, val2 )
{
   var $t_region = $( "#t_region" );
   var $t_provinces = $( "#t_provinces" );
   var flag = true;
   if( flag )
      $.ajax( {
         type: "POST",
         dataType: "json",
         url: "/dede/templets/default/china_city.php",
         async: false,
         timeout: 1000,
         data: {
            "region": val1,
            "provinces": val2
         },
         success: function()
         {
            //show school content in teaching_in_china web
            ajax_teach_school( $t_region.val(), $t_provinces.val() );
            flag = false;
         },
         complete: function( XMLHttpRequest, status )
         {
            //Timeout, and  status is success, error equivalents
            if( status == 'timeout' )ajaxTimeOut.abort();          //Cancel request
         }
      } );
   if( !flag )return false
}

并把这两个ajax事件下放到一级,二级下拉菜单的onchange事件里:

                 
<!--二级联动-->
<div class="teachcn_top clear"><span class="teachcn_tit fl">School List </span>
   <form class="teachcn_form">
      <select id="t_region" name="region" οnchange="ajax_teach_1st_change( this.value )">
         <option value="Eastern China" selected>Eastern China</option>
         <option value="Southwestern China">Southwestern China</option>
         <option value="North &amp; NW China">North &amp; NW China</option>
         <option value="Southern &amp; Central">Southern &amp; Central</option>
         <option value="Northeastern China">Northeastern China</option>
         <option value="Others">Others</option>
      </select>
      <select id="t_provinces" name="provinces"  οnchange="ajax_teach_2st_change()">
         <option value="zhejiang">zhejiang</option>
      </select>
   </form>
</div>
<!--动态显示内容-->
<div class="teachcn_list" id='text_ajax'></div>

13.实例一总结

至此,全部操作都结束了。总共写了5次ajax请求,嵌套ajax3次,其中进行了本地存储和获取,当然了优化的地方有很多,比如:

(1 )首页跳转我直接就用form表单提交操作了,顺道把两个二级联动选择值也传递过去了。

(2)在跳转页面,第二个select进行onchange事件时,可以直接调用生成搜索结果的ajax请求,这样可以少写一个ajax请求。

(3)第一级下拉菜单的内容也可以通过数据库查表返回动态生成。

其他一些优化的地方就不多做叙述了,骨架在了,细枝末节的修修改改也就容易些。

二、同页面(无刷新)的form表单ajax提交

这个的难点就在于form表单的submit提交的无刷新,最取巧的方法就是:

1.照常使用form表单提交,在ajax请求结束后,再添加return false语句,防止Form真实提交。

2直接调用ajaxSubmit方法后,添加return false语句,防止Form真实提交。

这个问题解决后,其他也就没什么问题了,代码如下:


                  
/**
 * Created by 西兰花的春天 on 2017/1/16.
 */
$( document ).ready( readyHandler );
function readyHandler()
{
   var $student_abroad_form = $( '#student_abroad_form' );
   var $student_abroad_result = $( '#student_abroad_result' );
   var $student_abroad_result_tbody = $( '#student_abroad_result_tbody' );
   var $per_fr_tit = $( '.per_fr_tit' );
   //submit ajax
   $student_abroad_form.submit( function()
   {
      var sex_val = $( 'input:radio[name="sex"]:checked' ).val();
      /* Set a parameter, in order to control ajax will not be submitted repeatedly
       No other operations are performed until a request is completed */
      var flag=false;
      if(flag)return false;
      sex_val == null ? alert( "Please select the gender" ) :
         $.ajax( {
            type: 'POST',
            url: 'school_27.php',
            contentType: 'application/json',   //内容格式
            dataType: 'json',
            async:false,
            timeout : 1000,
            data: $( this ).serialize(),
            success: function( data )
            {
               $student_abroad_form.hide();
               $student_abroad_result.show();
               $per_fr_tit.html( 'Resume of students' );
               for( var i = 0; i < data.length; i++ )
               {
                  var $tr = $( "<tr>" +
                            "<td class='per_fr_name list_tb0_bg result_td1'>" +
                            "<strong>" +
                            "<a href='school_edit_27.php?id=<?php echo id;?'>" + data[ i ].userid + "</a>" +
                            "</strong>" + "</td>" +

                            "<td class='per_fr_name result_td2'>" +
                            "<strong>" + data[ i ].sex + "</strong>" + "</td>" +

                            "<td class='per_fr_name result_td2'>" +
                            "<strong>" + data[ i ].nationality + "</strong>" + "</td>" +

                            "<td class='per_fr_name result_td2'>" +
                            "<strong>" + data[ i ].select_two + "</strong>" + "</td>" +

                            "<td class='per_fr_name result_td1'>" +
                            "<strong>" + '<a href="school_delete_27.php?id=<?php echo id;?>">delete</a>' + "</strong>" +
                            "</td>" +
                            "</tr>" );
                  $student_abroad_result_tbody.append( $tr );
               }
               flag=true;
            },
            complete : function(XMLHttpRequest,status)
            {
               //Timeout, and  status is success, error equivalents
               if( status == 'timeout' )ajaxTimeOut.abort();          //Cancel request
            },
            error: function( XMLHttpRequest, textStatus, errorThrown )
            {
               alert( XMLHttpRequest.status );
               alert( XMLHttpRequest.readyState );
               alert( textStatus );
            }
         } );
      return false;
   } );
}
//button back  show/hide
function student_abroad_back(){
   $( '#student_abroad_form' ).show();
   $( '#student_abroad_result' ).hide();
}

最终效果:

三、总结

以上基本上罗列了ajax的基本结构运用,骨架已经成型,根据项目的不同,需要添加不同的语句来行使不用的功能。在实际项目中,有条件的情况下,如下需要注意:

1.对用户恶意反复提交进行控制

2.对响应时间间隔进行处理

3.对发送和获取的数据进行积极处理,同时后端也做配合处理。

3.请求使用GET ,POST类型请求要发送两个TCP数据包(先发送文件头,再发送数据),GT类型请求只需要发送一个TCP数据包。

4.处理大量数据时,能做到流程控制,比如说延迟执行,递归等手段操作,缓解服务器处理压力。

5.async设置为false需要慎重使用,js 是单线程的,所以非常不推荐这种写法,会导致其它的任务被阻塞掉。

6.积极考虑用户体验,结合业务模式,合理运用。

以上几点是接下来需要不断完善的,因为这是我第二次写ajax相关请求,可以看出我的语句相对青涩,修行尚浅,若能苦行修炼,假以时日必能有所成就。

无论前端还是后端,有两点是必备的,也是最重要的,那就是学习能力和处理问题的能力,作为前端感性思维和理性思维需要互相交织,无论生活态度和还是代码素质同样重要,生活既是工作,代码既是艺术,会一项语言其实不稀奇,用最少的时间去消化尽可能多的东西(效率)恰恰是我比较看重的。



















前端jQuery的Ajax应用全攻略 本文旨在为前端开发者提供全面的jQuery Ajax技术指南,覆盖从基础到高级的应用场景。jQuery Ajax的核心概念和原理各种请求类型(GET/POST/PUT/DELETE)的实现复杂场景下的处理技巧性能优化和安全考虑与现代前端技术的整合首先介绍Ajax和jQuery的基础概念深入分析核心原理和架构详细讲解各种请求方法和使用场景通过实际案例展示完整实现探讨高级应用和最佳实践提供学习资源和工具推荐Ajax。 阅读详情

相关推荐

前端必知必会-JQuery AJAX

AJAX 是与服务器交换数据并更新网页部分内容的艺术 - 无需重新加载整个页面。AJAX = 异步 JavaScript 和 XML。简而言之;AJAX 是关于在后台加载数据并将其显示在网页上,而无需重新加载整个页面。使用 AJAX 的应用程序示例:Gmail、Google Maps、Youtube 和 Facebook 标签。本文介绍了JQuery AJAX的使用,如有问题欢迎私信和评论。

qq_24018193的博客 982

Jquery Ajax 使用案例

("#ff").serialize(),表示表单序列化,能直接往后端发送 表单序列化之后的值,可直接接收。$(aa).attr("dd") this 表示选中这一行,arrt获取属性的值,这样就拿到了id。//表示页面加载结束执行。

weixin_60934893的博客 315

一个完整的ajax应用例子

一个完整的用js写的ajax例子,模仿注册页面输入用户名,输入框失去焦点后,后台异步判断该用户名是否可用,并在页面显示判断结果

$.ajax()实现ajax语法格式及完整案例

$.ajax()代码模板 jQuery实现ajax语法为:$.ajax({}),其中{}为对象,对象里面的key键是固定的,比如: 1、type: 表示请求方式,一般为post或get 2、url表示请求的地址 3、contentType表示发送信息至服务器时内容编码类型 4、data表示发送到服务器的数据 5、dataType表示预期服务器返回数据的类型如:text,json,xml等等类型 6、success表示请求成功后的回调函数 7、error自动判断 (xml 或 html)。请求失败时调用此函数

pig_pig32的博客 3882

Anomalib实战:从零开始构建自定义数据集的异常检测模型

本文详细介绍了如何使用Anomalib 2.1.0从零开始构建自定义数据集的异常检测模型。通过实战演示,指导读者准备符合规范的数据集结构,快速上手训练Patchcore等先进算法,并完成模型推理与调优,为工业质检、医疗影像等场景提供高效的视觉异常检测解决方案。

weixin_29165465的博客 109

N32G003学习——第九章 第三节1 串口 发送

经过第九章前2节的学习,基础打下之后,开始敲代码。

qq_34525008的博客 1034

jQuery中的$.ajax()方法参数详解

jQuery中的$.ajax()方法参数详解ajax是异步更新,只需要进行少量的数据交互便可到达页面的局部刷新。其可用参数主要如下:1.url:要求为String类型的参数,(默认为当前页地址)发送请求的地址。2.type:要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。3.time

IT全栈 华强工作室 7147

保姆级避坑指南:Mid-360雷达到手后,用livox_ros_driver2从接线到出点云的完整流程

本文提供Mid-360雷达到手后的完整使用指南,涵盖从硬件接线、网络配置到livox_ros_driver2驱动的安装与调试,帮助用户避开常见陷阱,实现点云数据的稳定输出与可视化。重点解析了配置文件的参数设置和点云格式选择,确保用户能够高效部署和使用Mid-360雷达。

weixin_30733003的博客 484

前端——Ajax和jQuery

jQuery是JavaScript的工具库,对原生JavaScript中的DOM操作、事件处理、包括数据处理和Ajax技术等进行封装,提供更完善,更便捷的方法。

qq_53256193的博客 2686

AF3 ProteinDataset类的_patch方法解读

AlphaFold3 protein_dataset模块 ProteinDataset 类  _patch 方法的主要目的是围绕锚点残基(anchor residues)裁剪蛋白质数据,提取一个局部补丁(patch)作为模型输入。

qq_27390023的博客 1147

Python+ArcGIS实战:5步搞定土壤类型预测(附随机森林模型配置技巧)

本文详细介绍了如何结合Python与ArcGIS,利用随机森林模型进行土壤类型预测。通过5个核心步骤——数据预处理、样本创建、模型构建、空间预测与精度验证,构建了一套自动化、高精度的空间预测工作流,并提供了关键的模型配置与调参技巧,助力GIS开发者高效完成土壤制图任务。

weixin_29227585的博客 396

jQuery+ajax请求数据,渲染到前端界面

作为一个前端开发,在日常工作中,会不断的请求接口,调用接口,再对接口的数据进行一定的处理,渲染在前端界面,尤其是在今天前后端分离的时代,这项技能是每个前端开发必备~ 这里就简单的记录工作之中遇到的一些常见的对数据处理的方法,今天要说的是遇到了数组格式的图片的时候,该怎么处理。 一:对于图片数组的渲染 data.json: { "pics": ["img/p15.png", "img/p16.png","img/p17.png"] } 代码示例: <!DOCTYPE HTML> <htm

前端视听 9934

筑牢上线前安全防线:安全运维服务中的检测实践与深化

在日益严峻的网络安全形势下,将漏洞扫描、渗透测试和基线核查有机结合的上线前安全检测,是保障信息系统安全、稳定、合规上线的基石。通过专业、严谨、协作的检测实践,乙方安全团队能够有效协助甲方在系统生命周期的起点就构筑起坚固的安全防线,为业务的顺利开展和用户的信任保驾护航,真正实现“安全赋能业务”的价值。这道“守门人”的职责,是数字时代企业稳健前行的不可或缺的保障。专业的安全服务提供商(乙方)需要与甲方(系统所有者/运营方)建立紧密、透明、协作的伙伴关系,实现风险的闭环管理,甚至推动甲方安全能力的长期提升。

huluang的专栏 183

jQuery+ajax实现简单的上传图片功能

在前面的文章里面有写到,用vue上传图片的功能,vue-element-admin上传图片的功能:https://www.jianshu.com/p/383e1f2f4276,那如果是在jQuery里面,图片上传要怎么写?今天记录一个jQuery+ajax实现简单的上传图片功能。 思路很简单,和上面的差不多,前端以post的形式传递二进制图片文件给到后端,后端接收成功之后,同样返回一个字符串类型的...

祈澈菇凉 1万+

【Matlab】matlab代码实现迭代学习控制

该文介绍了在Matlab中实现迭代学习控制(ILC)的方法。ILC通过利用历史轨迹数据来优化重复任务的控制性能。文章提供了一个步进电机控制示例,包括:1)定义正弦轨迹;2)设置100次迭代和0.1学习率;3)建立二阶系统模型;4)执行ILC算法计算控制输入;5)绘制期望轨迹与实际输出的对比图。该示例展示了ILC的基本实现过程,并指出实际应用可能需要更复杂的设计。代码演示了误差计算、控制输入更新和结果可视化等关键步骤。

unber的博客 200

halcon3d点云补全方法

属于halcon实例中的内容,后面还接了一部分的匹配

Tianwen_running的博客 1231

jQuery Ajax 和 axios Ajax

区别: axios是通过promise技术实现对ajax实现的一种封装,本身上来说axios就是ajax,但是ajax却不单单只是axios;jQuery也实现了对ajax技术的封装,但是jQuery主要是对原生JavaScript进行封装,封装了js三大核心要素:ECMAScript、DOM、BOM,所以说jQuery封装的ajax只是其中的一小部分,如果通过引用jQuery来进行ajax交互实在是显得有所浪费资源,因此vue中封装了axios来实现对ajax技术的单独封装。 什么是 jQuery ?

qq_59612674的博客 3451

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

前端jQuery AJAX和后端Servlet技术完成异步登录注册程序

使用div+css按图2进行布局,点击“注册”按钮发起AJAX提交注册,由于需要上传文件,所以需要,提交之前先做数据验证,确保用户名、密码、确认密码必填, Email如果填写了,要符合Email格式(由于同时要提交图片,此处须使用DataForm进行提交)。(1)创建网页,创建网页文件login.html或使用课堂练习3的login.jsp,对应的servlet接口文件verify.java或使用课堂练习3的verify.java,以及接口消息所使用的消息类message.java,

qq_54992178的博客 3286

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Ajax和jQuery

Ajax和jQuery 一、Ajax 1、Ajax概述 ajax:Asynchronous JavaScript and XML(Asynchronous:异步的 JavaScript 和 XML)。 Asynchronous: 异步的意思 JavaScript:javascript脚本,在浏览器中执行 xml : 是一种数据格式 ajax是一种做局部刷新的方法,不是一种语言。 是浏览器客户端上的前端技术,是多个技术联合实现的产物。 ajax包含的技术主要有javascript,dom,css,,x

weixin_56341892的博客 4564

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ajax和jquery有什么关系,Ajax和jQuery有什么区别

Ajax和jQuery有什么区别Ajax和jQuery有什么区别,为什么招聘信息上面都写得是要求精通Ajax技术,貌似没有提到jQuery,应该学习哪个?更新时间:2019-05-12 06:03最满意答案如果只是找工作的话我推荐你只学jquery跟extjs 并且去了解一下JavaScript的简单实用,就可以了,对于ajax的话jquery中已经有实现的方法了,所以学会jquery 等于会用a...

weixin_36294922的博客 2193

前端使用Jquery发送ajax请求

这篇文章教大家如何使用jquery发送简单的ajax请求 前言 Ajax 一个向后端发送请求的方式。 使用 JQuery里怎么调用Ajax? 首先得引入JQuery 附上jquery下载链接https://www.bootcdn.cn/jquery/ 发送请求代码: html代码: <body> <div> <button onclick="sumbit()">发送请求</button> </div&...

wumingxiaozuzha的博客 3380

Web前端最全jQuery Ajax学习与运用,前端高级

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】世界上只有一种真正的英雄主义就是在认清生活真相之后仍然热爱它上面的示例演示了如何使用Load方法.提示:我们要时刻注意浏览器缓存, 当使用GET方式时要添加时间戳参数 (net Date()).getTime() 来保证每次发送的URL不同, 可以避免浏览器缓存.

2401_84446882的博客 1132

【使用python的flask和与前端ajax交互】实现一个简单的登录程序

flask ajax

weixin_44073346的博客 3475

jquery ajax请求后台 的简单例子

jQuery.ajax(url,[settings]) 概述 通过 HTTP 请求加载远程数据。 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。 最简单的情况下,$.ajax()可以不带任何参数直接...

Kevinvcc200的博客 2853
上一篇: ajax框架,juery的实现xml,中文乱码与跨域访问
下一篇: jqGrid API 及用法
CapsLockWY
博客等级 码龄9年 9粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值