JSON是JavaScript Object Notation 的首字母縮寫,單詞的意思是javascript對象表示法,這裏說的json指的是相似於javascript對象的一種數據格式,目前這種數據格式比較流行,逐漸替換掉了傳統的xml數據格式。javascript
特別注意:與json對象不一樣的是,json數據格式的屬性名稱須要用雙引號引發來,用單引號或者不用引號會致使讀取數據錯誤。css
json的另一個數據格式是數組,和javascript中的數組字面量相同。html
ajax技術的目的是讓javascript發送http請求,與後臺通訊,獲取數據和信息。ajax技術的原理是實例化xmlhttp對象,使用此對象與後臺通訊。ajax通訊的過程不會影響後續javascript的執行,從而實現異步。java
現實生活中,同步指的是同時作幾件事情,異步指的是作完一件事再作另一件事,程序中的同步和異步是把現實生活中的概念對換,也就是程序中的異步指的是現實生活中的同步,程序中的同步指的是現實生活中的異步。jquery
ajax能夠實現局部刷新,也叫做無刷新,無刷新指的是整個頁面不刷新,只是局部刷新,ajax能夠本身發送http請求,不用經過瀏覽器的地址欄,因此頁面總體不會刷新,ajax獲取到後臺數據,更新頁面顯示數據的部分,就作到了頁面局部刷新。ajax
ajax請求的頁面或資源只能是同一個域下面的資源,不能是其餘域的資源,這是在設計ajax時基於安全的考慮。特徵報錯提示:正則表達式
XMLHttpRequest cannot load https://www.baidu.com/. Nojson
'Access-Control-Allow-Origin' header is present on the requested resource.跨域
Origin 'null' is therefore not allowed access.數組
經常使用參數:
一、url 請求地址
二、type 請求方式,默認是'GET',經常使用的還有'POST'
三、dataType 設置返回的數據格式,經常使用的是'json'格式,也能夠設置爲'html'
四、data 設置發送給服務器的數據
五、success 設置請求成功後的回調函數
新的寫法(推薦):
$.ajax({
url:"接口",
type:"get/post",
dataType:"json",
data:{"aa":1},
})
.done(function(data){
......
})
.fail:function(){
alert("服務器超時,請重試!");
}
ajax只能請求同一個域名下的數據或資源,有時候跨域請求數據,就須要用到jsonp技術,jsonp能夠跨域請求數據,它的原理主要是利用了script標籤能夠跨域連接資源的特性。
<script>
function aa(dat){
alert(data.name);
}
</script>
<script src="../js/data.js"></script>
頁面上定義一個函數,引用一個外部js文件,外部js文件的地址能夠是不一樣域的地址,外部js文件的內容以下:
aa({"name":"tom","age":18});
外部js文件調用頁面上定義的函數,經過參數把數據傳進去。
$.ajax({
url:"接口",
type:"get/post",
dataType:"jsonp",
data:{"aa":1},
})
.done(function(data){
......
})
.fail:function(){
alert("服務器超時,請重試!");
}
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>jsonp</title> 6 <link rel="stylesheet" href="../css/reset.css"> 7 <style> 8 .con{ 9 width:400px; 10 margin:50px auto; 11 font-size: 0; 12 } 13 .con input{ 14 width:270px; 15 height:6px; 16 padding:15px; 17 } 18 .con button{ 19 width:96px; 20 height:40px; 21 line-height:40px; 22 border:none; 23 font-size:14px; 24 padding: 0; 25 background:#3385ff; 26 border-bottom:1px solid #2d78f4; 27 color:#fff; 28 } 29 .search_content{ 30 font-size:14px; 31 border:1px solid #ccc; 32 margin-top:-1px; 33 display: none; 34 } 35 .search_content li{ 36 padding: 2px 15px; 37 margin-top:5px; 38 } 39 .search_content li:nth-child(1){ 40 margin-top: 0; 41 } 42 .search_content li:hover{ 43 background:#cccccc; 44 cursor: pointer; 45 } 46 </style> 47 <script src="../js/jquery-1.12.4.min.js"></script> 48 <script> 49 $(function(){ 50 $("#search").keyup(function(){ 51 var keyword = $(this).val(); 52 $.ajax({ 53 url:"https://sug.so.360.cn/suggest?", 54 type:"get", 55 dataType:"jsonp", 56 data:{word:keyword} 57 }).done(function(data){ 58 if(data.p == true){ 59 var str = ""; 60 if(data.s.length>0){ 61 for(var i=0;i<data.s.length;i++){ 62 str +="<li>"+data.s[i]+"</li>"; 63 } 64 $(".search_content").html(str); 65 // $(".search_content").append(str); 66 $(".search_content").show(); 67 }else{ 68 $(".search_content").html(str); 69 // $(".search_content").append(str); 70 $(".search_content").hide(); 71 } 72 73 } 74 console.log(data) 75 }).fail(function(error){ 76 console.log("error"); 77 }) 78 }); 79 $(".search_content").delegate("li","click",function(){ 80 $("#search").val($(this).html()); 81 // $(".search_content").append(str); 82 $(this).parent().hide(); 83 }) 84 }) 85 </script> 86 </head> 87 <body> 88 <div class="con"> 89 <input id="search" type="text" placeholder="請輸入內容"> 90 <button>搜索</button> 91 <ul class="search_content"></ul> 92 </div>a 93 </body> 94 </html>
能讓計算機讀懂的字符串匹配規則。
var re = new RegExp("規則","可選參數");
var re /規則/參數;
a、普通字符匹配
如:/a/ 匹配字符 'a'
/a,b/ 匹配字符'a,b'
b、轉義字符匹配
\d 匹配一個數字,即0-9
\D 匹配一個非數字,即除了 0-9
\w 匹配一個單詞字符,(字母、數字、下劃線)
var re2 = /^w/ 以字母,數字,下劃線開頭
var str = '@asd';
console.log(re2.test(str)) false
\W 匹配任何非單詞字符。等價於[^A-Za-z0-9_]
\s 匹配一個空白符(空格、tab、換行、回車)
\S 匹配一個非空白符
\b 匹配單詞邊界
\B 匹配非單詞邊界
. 匹配一個任意字符,除了換行符\n 和回車符\r
\1 重複子項
? 出現零次或一次(最多出現一次)
n? 匹配任何包含零個或一個n的字符串
+ 出現一次或屢次 (至少出現一次)
n+匹配任何包含至少一個n的字符串
* 出現零次或屢次 (任意次)
n*匹配任何包含零個或多個n的字符串
{n} 出現n次
{n,m} 出現n到m次
{n,} 至少出現n次
[abc]:查找方括號之間的任何字符
[^abc]:查找任何不在方括號之間的字符
[0-9]:查找任何從0-9的數字
[a-z]:查找任何從小寫a到小寫z的字符
[abc123] :匹配'abc123'中的任意一個字符
[a-z0-9]:匹配a到z或者0到9中的任意一個字符
^ 以緊挨的元素開頭(匹配開頭)
$ 以緊挨的元素結尾(匹配結尾)
var re3 = /^d+$/;(開頭是數字結尾也是數字,而且數字至少出現一次)
var str3 = '123abc'
alert(re3.test(str3));
g:global 全文搜索,默認搜索到第一個結果就中止
i:ingore case 忽略大小寫,默認大小寫敏感
m:multipe lines 多行搜索(更改^和$的含義,使它們分別在任意一行對待首和行尾匹配,而不只僅在整個字符串的開頭和結尾匹配)
a、test
用法:正則.test(字符串)匹配成功,就返回真,不然就返回假
var re = /a/ig;
var str = 'abc';
alert(re.test(str)); true
b、search
用法:字符串.search(正則)匹配成功,返回位置,不然返回-1
str.search(re);
c、match
用法:字符串.match(正則):匹配成功,返回匹配成功的數組,不然就返回null
d、replace
用法:字符串.replace(正則,新的字符串)匹配成功的字符去替換新的字符
用法:正則.exce(字符串)
exec()方法檢索字符串中的指定值,返回值是被找到的值。若是沒有發現匹配,則返回null
用法:str.split(" ")或者str.split(",") 字符串分隔,返回數組
匹配成功就結束,不會繼續匹配,區分大小寫