我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如何使用jquery的ajax来实现无刷新的获取内容
我们只是单方面的获取内容,分页等就不考虑了,后期会讲到无刷新的分页
页面中我们放置一个Div容器用来存放返回的内容

注:wait.gif是一个类似进度条的效果,当没有加载的内容没有加载出来的时候,就显示这个效果,这样就能提高用户的体验度。然后最重要的就是jquery这块了,需要用到ajax来完成
代码:
function getInfo()
{
$.ajax({
url:"doAction.aspx?fig=reader&id=1&page=1",
type:"POST",
success:function(Data)
{
$("#comment").html(Data);
//通过arguments[0]接收也可以 $("#comment").html(arguments[0]);
},
error:function()
{
alert("程序出错");
}
})
}
url:指向的url
type:提交的方式,可以为POST或者GET
success:通信成功后执行的函数
error:通信失败后执行的函数
beforeSend:通信前执行的韩硕
complete:通信完成后执行的函数
在这里采用了POST提交的方式,比Get更安全些,所以也可以替换成下面的方式
function getInfo1() {
$.post("doAction.aspx", { fig: "reader", id:"1", page:"1" }, function () {
$("#comment").html(arguments[0]);
})
}
可以看到参数的写法不同,采用POST提交方式,第一种方式和第二种方式区别在于:
首先,接收参数的时候,在doAction.aspx页面里第一种方式使用Request.QueryString["fig"]接收,第二种方式使用的是Request.Form["fig"]
其次,第一种方式当通信失败后,可以友好的返回错误信息,第二种方式暂时没发现可以返回
然后在doAction.aspx页面中,只要进行相应的处理就可以了
if (Request.Form["fig"] != null && Request.Form["fig"].ToString() == "reader")
{
ajax_getcomment("1",1);
}
//从数据库中获取数据
private void ajax_getcomment(string id, int page)
{
using (CommentBO cm = new CommentBO(id, page - 1))
{
Response.Write(cm.getCommentContent());
}
}
同样如果才用Get的提交方式,使用$.get("",{},function(){})也是一样的..
另外一种加载内容的方式可以使load()方法,关于用法可以查阅api,简单说说上面的用load如何加载
代码
这样就把内容加载到页面里了,有一点问题就是发现页面中返回的内容和alert弹出的有些不一样,alert弹出的返回html标签,而页面没有,那是因为页面已经解析了html代码
其他的添加,修改,删除等基本操作也是如此,大同小异,只是在doaction.aspx页面中调用不同的方法而已,下面把主要的jquery代码贴出来看看
function addpinlun()
{
var $CommentParentID =arguments[0];
var $CommentUser =$('#CommentUser').val();
var $CommentText =$('#CommentText').val();
var $CommentValidate =$('#CommentValidate').val();
if($.trim($CommentUser)=='')
{
alert("请填写昵称!");
$("#CommentUser").focus();
return false;
}
if($.trim($CommentText)=='')
{
alert("请填写评论内容!");
$("#CommentText").focus();
return false;
}
if($.trim($CommentValidate)=='')
{
alert("请输入验证码");
$("#CommentValidate").focus();
return false;
}
StopButton('CommentSubmit',10);
// 验证完成可以ajax添加
$.ajax({
url: "doAction.aspx?action=add&commentparentid=" + $CommentParentID + "&commentuser=" + escape($CommentUser) + "&commenttext=" + escape($CommentText) + "&commentvalidate=" + escape($CommentValidate) + "&time=" + new Date().toString(),
type: "GET",
success: function (data) {
if (arguments[0] == "ERROR") {
alert("验证码超时,请重新输入");
}
else {
getInfo();
$("#CommentText").val("");
//验证成功时,刷新验证码图片
$("#CommentValidateImages").attr("src", "VerifyCode.aspx?s=" + Math.random());
// alert("添加成功");
$("#alertMessgae").html(data);
}
$('#CommentValidate').val("");
}
})
}
function StopButton()
{
document.getElementById(arguments[0]).disabled=true;
document.getElementById(arguments[0]).value="提交("+arguments[1]+")";
if(arguments[1]>=1)
{
arguments[1]--;
window.setTimeout("StopButton('"+arguments[0]+"',"+arguments[1]+")",1000);
}
else
{
document.getElementById(arguments[0]).disabled=false;
document.getElementById(arguments[0]).value="提交";
}
}
DoAction.aspx页面的部分代码页贴出来
if(Request.QueryString["action"]!=null && Request.QueryString["action"]=="add")
{
if (Session["VerifyCode"].ToString().ToLower() != commentvalidate.ToLower())
{
Response.Write("ERROR");
}
else
{
DBQuery.ExecuteScalar("insert into comment(commentparentid,commentuser,commenttext,commentreply,commentip) values('" + commentparentid + "','" + commentuser + "','" + Server.HtmlEncode(commenttext) + "','','" + Request.ServerVariables["REMOTE_ADDR"] + "')");
Response.Write("<script>alert('评论发表成功!</script>");
}
}
ajax里的属性很多,可以查看api,根据自己的需要调用不同的属性就可以了,这里面有一点需要注意的是
如果判断用户名是否有重复的时候,要使用$.getIfModified而不能是用$.get,大家可以测试一下
如果使用$.get你第一次注册了一个名字,你不要做其他的操作,你再在文本框里面输入相同的名称,那个时侯还能注册的,这点要注意。

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
