开发知识点-前端-jQuery

news/2024/7/11 0:07:41 标签: 前端, jquery, okhttp

在这里插入图片描述

$('xxxx')  id 
#



  <script src="static/js/jquery.min.js?v=2.1.4"></script>
jQuery对象上面还定义了
Ajax方法($.ajax()),用来处理Ajax操作。

调用该方法后,浏览器就会向服务器发出一个HTTP请求。

$.ajax()的用法主要有两种。

$.ajax(url[, options])
$.ajax([options])


$.ajax({
  async: true,
  url: '/url/to/json',
  type: 'GET',
  data : { id : 123 },
  dataType: 'json',
  timeout: 30000,
  success: successCallback,
  error: errorCallback,
  complete: completeCallback,
  statusCode: {
        404: handler404,
        500: handler500
  }
})
 
function successCallback(json) {
    $('<h1/>').text(json.title).appendTo('body');
}
 
function errorCallback(xhr, status){
    console.log('出问题了!');
}
 
function completeCallback(xhr, status){
    console.log('Ajax请求已结束。');
}


上面代码的对象参数有多个属性,含义如下:

accepts:将本机所能处理的数据类型,告诉服务器。
async:该项默认为true,如果设为false,则表示发出的是同步请求。
beforeSend:指定发出请求前,所要调用的函数,通常用来对发出的数据进行修改。
cache:该项默认为true,如果设为false,则浏览器不缓存返回服务器返回的数据。注意,浏览器本身就不会缓存POST请求返回的数据,所以即使设为false,也只对HEADGET请求有效。
complete:指定当HTTP请求结束时(请求成功或请求失败的回调函数,此时已经运行完毕)的回调函数。不管请求成功或失败,该回调函数都会执行。它的参数为发出请求的原始对象以及返回的状态信息。
contentType:发送到服务器的数据类型。
context:指定一个对象,作为所有Ajax相关的回调函数的this对象。
crossDomain:该属性设为true,将强制向相同域名发送一个跨域请求(比如JSONP)。
data:向服务器发送的数据,如果使用GET方法,此项将转为查询字符串,附在网址的最后。
dataType:返回值类型,服务器返回的数据类型,可以设为text、html、script、json、jsonp和xml。
error:请求失败时的回调函数,函数参数为发出请求的原始对象以及返回的状态信息。
headers:指定HTTP请求的头信息。
ifModified:如果该属性设为true,则只有当服务器端的内容与上次请求不一样时,才会发出本次请求。
jsonp:指定JSONP请求“callback=?”中的callback的名称。
jsonpCallback: 指定JSONP请求中回调函数的名称。
mimeType:指定HTTP请求的mime type。
password:指定HTTP认证所需要的密码。
statusCode:值为一个对象,为服务器返回的状态码,指定特别的回调函数。
success:请求成功时的回调函数,函数参数为服务器传回的数据、状态信息、发出请求的原始对象。
timeout: 等待的最长毫秒数。如果过了这个时间,请求还没有返回,则自动将请求状态改为失败。
type:向服务器发送信息所使用的HTTP动词,默认为GET,其他动词有POSTPUTDELETE。
url:服务器端网址。这是唯一必需的一个属性,其他属性都可以省略。
username:指定HTTP认证的用户名。
xhr:指定生成XMLHttpRequest对象时的回调函数。
这些参数之中,url可以独立出来,作为ajax方法的第一个参数。也就是说,上面代码还可以写成下面这样。

$.ajax('/url/to/json',{
  type: 'GET',
  dataType: 'json',
  success: successCallback,
  error: errorCallback
})
作为向服务器发送的数据,data属性也可以写成一个对象。

$.ajax({
  url: '/remote/url',
  data: {
    param1: 'value1',
    param2: 'value2',
    ...
  }
});
 
// 相当于
$.ajax({
    url: '/remote/url?param1=value1&param2=value2...'
}});
1.2 简便写法
ajax方法还有一些简便写法。

$.get():发出GET请求。
$.getScript():读取一个JavaScript脚本文件并执行。
$.getJSON():发出GET请求,读取一个JSON文件。
$.post():发出POST请求。
$.fn.load():读取一个html文件,并将其放入当前元素之中。
一般来说,这些简便方法依次接受三个参数:url、数据、成功时的回调函数。

1.2.1 $.get(),$.post()
这两个方法分别对应HTTPGET方法和POST方法。

$.get('/data/people.html', function(html){
  $('#target').html(html);
});
 
$.post('/data/save', {name: 'Rebecca'}, function (resp){
  console.log(JSON.parse(resp));
});
get方法和post方法的参数相同,第一个参数是服务器网址,该参数是必需的,其他参数都是可选的。第二个参数是发送给服务器的数据,第三个参数是操作成功后的回调函数。

上面的post方法对应的ajax写法如下。

$.ajax({
    type: 'POST',
    url: '/data/save',
    data: {name: 'Rebecca'},
    dataType: 'json',
    success: function (resp){
      console.log(JSON.parse(resp));
    }
});
1.2.2 $.getJSON()
ajax方法的另一个简便写法是getJSON方法。当服务器端返回JSON格式的数据,可以用这个方法代替$.ajax方法。

$.getJSON('url/to/json', {'a': 1}, function(data){
    console.log(data);
});
上面的代码等同于下面的写法。

$.ajax({
  dataType: "json",
  url: '/url/to/data',
  data: {'a': 1},
  success: function(data){
    console.log(data);
  }
});
1.2.3 $.getScript()
$.getScript方法用于从服务器端加载一个脚本文件。

$.getScript('/static/js/myScript.js', function() {
    functionFromMyScript();
});
上面代码先从服务器加载myScript.js脚本,然后在回调函数中执行该脚本提供的函数。

getScript的回调函数接受三个参数,分别是脚本文件的内容,HTTP响应的状态信息和ajax对象实例。

$.getScript( "ajax/test.js", function (data, textStatus, jqxhr){
  console.log( data ); // test.js的内容
  console.log( textStatus ); // Success
  console.log( jqxhr.status ); // 200
});
getScript是ajax方法的简便写法,因此返回的是一个deferred对象,可以使用deferred接口。

jQuery.getScript("/path/to/myscript.js")
    .done(function() {
        // ...
    })
    .fail(function() {
        // ...
});
1.3 Ajax事件
jQuery提供以下一些方法,用于指定特定的AJAX事件的回调函数。

.ajaxComplete():ajax请求完成。
.ajaxError():ajax请求出错。
.ajaxSend():ajax请求发出之前。
.ajaxStart():第一个ajax请求开始发出,即没有还未完成ajax请求。
.ajaxStop():所有ajax请求完成之后。
.ajaxSuccess():ajax请求成功之后。
下面是示例。

$('#loading_indicator')
.ajaxStart(function (){$(this).show();})
.ajaxStop(function (){$(this).hide();});
下面是处理Ajax请求出错(返回404500错误)的例子。

$(document).ajaxError(function (e, xhr, settings, error) {
  console.log(error);
});
1.4 返回值
ajax方法返回的是一个deferred对象,可以用then方法为该对象指定回调函数(详细解释参见《deferred对象》一节)。

$.ajax({
  url: '/data/people.json',
  dataType: 'json'
}).then(function (resp){
  console.log(resp.people);
})
1.5 中文乱码
1.5.1 解决方法一
js文件中使用encodeURI()方法。

var url = "Validate.jsp?id=" + encodeURI(encodeURI(idField.value));   
2.在后台中对传递的参数进行URLDecoder解码

String username = URLDecoder.decode(request.getParameter("id"),"UTF-8")
1.5.2 解决方法二
当网站页面不是utf-8编码时,ajax提交的中文便会变成乱码。

解决方法如下:找到jquery.js里的contentType:application/x-www-form-urlencoded,将它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。

原因:未指定charset时,jquery使用ISO-8859-1ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。jquery的ajax根本没有考虑到国际化的问题,而使用了欧洲的字符集,所以传递中文时才会出现乱码

  
$(.pagination-split’).children().length 这个是一个 jQuery 的表达式,用来获取 pagination-split 这个类名的元素的子元素的个数12。它的意思是:

$(.pagination-split’):选择所有有 pagination-split 这个类名的元素,返回一个 jQuery 对象。
.children():在上一步的结果中,搜索这些元素的子元素,并返回一个新的 jQuery 对象。
.length:获取上一步的结果中包含的元素的个数,并返回一个数字。
例如,如果页面上有这样一段 HTML 代码:

<div class="pagination-split">
  <span>1</span>
  <span>2</span>
  <span>3</span>
</div>
那么 $(.pagination-split’).children().length 的值就是 3,因为 pagination-split 这个类名的 div 元素有三个 span 子元素

http://www.niftyadmin.cn/n/5408457.html

相关文章

Licky‘s Escape 现已在苹果应用商店上线!

Pixelcraft 隆重推出 Aavegotchi 的首款手机游戏 —— Lickys Escape&#xff01; Lickys_Escape_Launch1_2024--1- 与 Licky 一起潜入 Gotchiverse吧&#xff01;Licky是一只憨厚但勇敢的Lickquidator&#xff0c;但它的任务出了差错。被一群卑鄙的 Gotchis 抓走后&#xff0c…

C#在并发编程使用Frozen来确保线程安全性

在C#中&#xff0c;Frozen方法通常用于通过不可变对象来确保线程安全性。这通常在并发编程中很有用&#xff0c;特别是在共享状态的多线程环境中。Frozen方法是Caliburn Micro框架中的一个方法&#xff0c;它用于将对象标记为不可变。 当你调用Frozen方法时&#xff0c;它返回…

【源码】imx6ull实现触摸屏单点实验-移植tslib和qt

一、本实验实验的器材&#xff1a; 1.正点原子imx6ull的阿尔法开发板v2.2 2.屏幕ALIENTEK 4.3 RGBLCD 二、实验已经移植好的文件&#xff1a; 仓库代码&#xff1a;https://gitee.com/wangyoujie11/atkboard_-linux_-driver.git 1.文件说明 arm-qt.tar.bz2&#xff1a;移植好的…

支付宝小程序模板开发,实现代小程序备案申请

大家好&#xff0c;我是小悟 支付宝小程序备案整体流程总共分为五个环节&#xff1a;备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前&#xff0c;需要确保小程序基本信息已填写完成、小程序至少存在一…

workflow系列教程(7)mysql任务

往期教程 如果觉得写的可以,请给一个点赞关注支持一下 观看之前请先看,往期的博客教程,否则这篇博客没办法看懂 workFlow c异步网络库编译教程与简介 C异步网络库workflow入门教程(1)HTTP任务 C异步网络库workflow系列教程(2)redis任务 workflow系列教程(3)Series串联任务流…

全网公开!!苍穹外卖或吉瑞外卖等外卖购物项目如何拓展?简历如何写?已经经过不同公司多轮面试。项目中会问到哪些问题?以及问题如何解决?

文章末尾联系作者&#xff0c;免费获取外卖项目的拓展和讲解资料&#xff0c;祝你面试成功 &#xff01;&#xff01;&#xff01; 文章问题的解答&#xff0c;以及作者的规划进步历程&#xff0c;尽在作者的知识库。 想要加入并查阅作者的知识库可以联系作者 不要白嫖&#…

3分钟学会写文心一言指令

文心一言是百度研发的 人工智能大语言模型产品&#xff0c;能够通过上一句话&#xff0c;预测生成下一段话。 任何人都可以通过输入【指令】和文心一言进行对话互动、提出问题或要求&#xff0c;让文心一言高效地帮助人们获取信息、知识和灵感。 指令&#xff08;prompt&#x…

关于淘宝的nodejs镜像网址更新后,前端项目出现的一系列问题解决方案。

问题 npm install&#xff0c;之前是成功的&#xff0c;最近不成功。 原因 之前的npm.taobao.org镜像源已经停用 解决方法 把所有的npm.taobao.org替换成npmmirror.com&#xff0c;这个新的淘宝镜像地址 如果使用nvm(没有忽略)需要修改如下&#xff1a; nvm node_mirror…