柚子快報(bào)邀請(qǐng)碼778899分享:
柚子快報(bào)邀請(qǐng)碼778899分享:
.para { margin-top:5px; text-indent:2em;background:#DDD;}
已有評(píng)論:
在上面的代碼中,在jQuery部分,當(dāng)返回?cái)?shù)據(jù)成功后,首先清空id為“resText”的元素的內(nèi)容,以便重新構(gòu)造新的HTML,然后通過(guò)$.each()循環(huán)函數(shù)依次遍歷每個(gè)項(xiàng),并將遍歷出來(lái)的內(nèi)容構(gòu)建成HTML代碼拼接起來(lái),最后將構(gòu)建好的HTML添加到id為“resText”的元素中。
不僅如此,還能通過(guò)使用JSONP形式的回調(diào)函數(shù)來(lái)加載其他網(wǎng)站的JSON數(shù)據(jù),例如從圖片網(wǎng)站(http://Flicker.com)搜索汽車(chē)類(lèi)別的4張最新圖片。代碼如下:(假設(shè)你已經(jīng)對(duì)JSONP有了解——不熟悉JSONP的同學(xué)可以看我的這篇文章:關(guān)于JSON和JSONP的詳解)
上面的代碼中再次用到全局函數(shù)$.each()來(lái)遍歷數(shù)據(jù),因?yàn)橹恍枰?張圖片,所以當(dāng)i=3的時(shí)候就需要退出循環(huán)。在$.each()函數(shù)中,如果需要退出each循環(huán),只要返回false即可。
關(guān)于JSON和JSONP的詳解
$.ajax()方法
==========
$.ajax()方法是jQuery最底層的Ajax實(shí)現(xiàn)。
它的結(jié)構(gòu)為:
$.ajax(options)
該方法只有1個(gè)參數(shù),但在這個(gè)對(duì)象里包含了$.ajax()方法所需要的請(qǐng)求設(shè)置以及回調(diào)函數(shù)等信息,參數(shù)以key/value的形式存在,所有參數(shù)都是可選的。
前面用到的$.load()、$.get()、$.post()、$getScript()和$.getJSON()這些方法,都是基于$.ajax()方法構(gòu)建的,$.ajax()方法是jQuery最底層的Ajax實(shí)現(xiàn),因此可以用它來(lái)代替前面的所有方法。
例如,可以使用下面的jQuery代碼代替$.getScript方法:
$(function(){
$(‘#send’).click(function() {
$.ajax({
type: “GET”,
url: “test.js”,
dataType: “script”
});
});
});
再例如,可以使用以下jQuery代碼來(lái)代替$.getJSON()方法:
$(function(){
$(‘#send’).click(function() {
$.ajax({
type: “GET”,
url: “test.json”,
dataType: “json”,
success : function(data){
$(‘#resText’).empty();
var html = ‘’;
$.each( data , function(commentIndex, comment) {
html += ‘
’ + comment[‘username’] + ‘:
’ + comment[‘content’] + ‘
’;
});
$(‘#resText’).html(html);
$(‘#resText’).val(html);
}
});
});
});
序列化
===
最后,講解一下序列化元素:
1.serialize()方法
做項(xiàng)目的過(guò)程中,表單是必不可少的,經(jīng)常用來(lái)提供數(shù)據(jù),例如注冊(cè)、登錄等。常規(guī)的方法是使表單提交到另一個(gè)頁(yè)面,整個(gè)瀏覽器都會(huì)被刷新,而使用Ajax技術(shù)則能夠異步的提交表單,并將服務(wù)器返回的數(shù)據(jù)顯示在當(dāng)前頁(yè)面中。
前面在講解$.get()和$.post()方法的時(shí)候,表單的HTML代碼如下:
評(píng)論:
姓名:
為了獲取姓名和內(nèi)容,必須將字段的值逐個(gè)添加到data參數(shù)中。代碼如下:
$(‘#send’).click(function() {
$.get(“get1.php”, {
username:$(‘#username’).val(),
content:$(‘#content’).val()
},function(data,textStatus){
$(‘#resText’).html(data); //將返回的數(shù)據(jù)添加到頁(yè)面上
});
});
這種方式只有少量字段的表單中,勉強(qiáng)還可以用,但如果表單元素越來(lái)越復(fù)雜,使用這種方式在增大工作量的同時(shí)也使表單缺乏彈性。jQuery為這一常用的操作提供了一個(gè)簡(jiǎn)化的方法——serialize()。與jQuery中其他方法一樣,serialize()方法也是作用于一個(gè)jQuery對(duì)象,它能夠?qū)OM元素內(nèi)容序列化為字符串,用于Ajax請(qǐng)求。通過(guò)使用serialize()方法,可以把剛才的jQury代碼改為如下:
$(‘#send’).click(function() {
.
g
e
t
(
"
g
e
t
1.
p
h
p
"
,
.get("get1.php",
.get("get1.php",(‘#form1’).serialize(),function(data,textStatus){
$(‘#resText’).html(data); //將返回的數(shù)據(jù)添加到頁(yè)面上
});
});
我們可以看到使用serialize()與前面那個(gè)逐個(gè)傳參的效果是一樣的。
而且這種,即使在表單中再增加字段,腳本仍然能夠使用,并且不需要做其他多余工作。
需要注意的是,$.get()方法中data參數(shù)不僅可以使用映射方式,如以下jQuery代碼:
{
username: $(‘#username’).val(),
conent: $('#content).val()
}
也可以使用字符串方式,如以下jQuery代碼:
“username=” + encodeURIComponent(KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#?username').val(…(‘#content’).val())
用字符串方式時(shí),需要注意對(duì)字符編碼(中文問(wèn)題),如果不希望編碼帶來(lái)麻煩,可以使用serialize()方法,它會(huì)自動(dòng)編碼。
因?yàn)閟erialize()方法作用于jQuery對(duì)象,所以不光只有表單能使用它,其他選擇器選取的元素也都能使用它,如以下jQuery代碼:
$(“:checkbox,:radio”).serialize();
把復(fù)選框和單選框的值序列化為字符串形式,只會(huì)將選中的值序列化。
2.serializeArray()方法
在jQuery中還有一個(gè)與serialize()類(lèi)似的方法——serializeArray(),該方法不是返回字符串,而是將DOM元素序列化后,返回JSON格式的數(shù)據(jù)。jQuery代碼如下:
var fields = $(“:checkbox,:radio”).serializeArray();
console.log(fields);
通過(guò)console.log()方法輸出fields對(duì)象,然后在瀏覽器的F12中查看該對(duì)象。
既然是一個(gè)對(duì)象,那么就可以使用$.each()函數(shù)對(duì)數(shù)據(jù)進(jìn)行迭代輸出。代碼如下:
$(function() {
var fields = $(“:checkbox,:radio”).serializeArray();
console.log(fields);
$.each(fields,function(i,field){
$(‘#results’).append(fiels.value + " , ");
});
});
3.$.param()方法
它是serialize()方法的核心,用來(lái)對(duì)一個(gè)數(shù)組或?qū)ο蟀凑誯ey/value進(jìn)行序列化。
例如:
var obj = {a:1,b:2,c:3};
var k = $.param(obj);
alert(k); //輸出a=1&b=2&c=3
TIP
===
$.ajax() 方法是
.
g
e
t
、
.get、
.get、.post 等一系列方法的基礎(chǔ),這些方法的底層還是調(diào)用 $.ajax() 方法。拿一小段源碼來(lái)看一下:
getJSON: function(url,data,callback) {
return jQuery.get(url,data,callback,“json”);
}
get: function(url,data,callback,type) {
// shift arguments if data argument was omited
if(jQuery.isFunction(data)) {
type = type || callback;
callback = data;
data = null;
}
return jQuery.ajax({
type: “GET”,
url: url,
data: data,
小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)初中級(jí)前端工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年Web前端開(kāi)發(fā)全套學(xué)習(xí)資料》送給大家,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
由于文件比較大,這里只是將部分目錄截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以添加下面V無(wú)償領(lǐng)?。。▊渥ⅲ呵岸耍?/p>
算法
冒泡排序 選擇排序 快速排序 二叉樹(shù)查找: 最大值、最小值、固定值 二叉樹(shù)遍歷 二叉樹(shù)的最大深度 給予鏈表中的任一節(jié)點(diǎn),把它刪除掉 鏈表倒敘 如何判斷一個(gè)單鏈表有環(huán)
由于篇幅限制小編,pdf文檔的詳解資料太全面,細(xì)節(jié)內(nèi)容實(shí)在太多啦,所以只把部分知識(shí)點(diǎn)截圖出來(lái)粗略的介紹,每個(gè)小節(jié)點(diǎn)里面都有更細(xì)化的內(nèi)容!
中…(img-93XF4Asf-1710799034813)] [外鏈圖片轉(zhuǎn)存中…(img-q6ggjeJE-1710799034814)] [外鏈圖片轉(zhuǎn)存中…(img-5MQjeUqG-1710799034815)] [外鏈圖片轉(zhuǎn)存中…(img-kk3MCJfj-1710799034815)]
由于文件比較大,這里只是將部分目錄截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以添加下面V無(wú)償領(lǐng)?。。▊渥ⅲ呵岸耍?[外鏈圖片轉(zhuǎn)存中…(img-kZPU35rt-1710799034816)]
算法
冒泡排序 選擇排序 快速排序 二叉樹(shù)查找: 最大值、最小值、固定值 二叉樹(shù)遍歷 二叉樹(shù)的最大深度 給予鏈表中的任一節(jié)點(diǎn),把它刪除掉 鏈表倒敘 如何判斷一個(gè)單鏈表有環(huán) [外鏈圖片轉(zhuǎn)存中…(img-XFo9oNfd-1710799034817)]
由于篇幅限制小編,pdf文檔的詳解資料太全面,細(xì)節(jié)內(nèi)容實(shí)在太多啦,所以只把部分知識(shí)點(diǎn)截圖出來(lái)粗略的介紹,每個(gè)小節(jié)點(diǎn)里面都有更細(xì)化的內(nèi)容!
開(kāi)源分享:【大廠前端面試題解析+核心總結(jié)學(xué)習(xí)筆記+真實(shí)項(xiàng)目實(shí)戰(zhàn)+最新講解視頻】
柚子快報(bào)邀請(qǐng)碼778899分享:
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。