一、問題來源
今天使用ajax時,發現get傳data時,傳遞json字符串時傳不過去參數,因此作了一些實驗測試ajax的get和post的傳遞data時的不一樣。ajax
二、概念
ajax有三種傳遞傳遞data的方式:json
- json格式
- json字符串格式
- 標準參數模式
1.json格式瀏覽器
形如:
{「username」:」chen」,」nickname」:」alien」}app
ajax:異步
$.ajax({ type:"post", url:"/test/saveUser", data:{"username":"chen","nickname":"alien"}, dataType:"json", success: function(data){ console.log(data); } });
2.json字符串
形如:
「{「username」:」chen」,」nickname」:」alien」}」 或者JSON.stringify({「username」:」chen」,」nickname」:」alien」})函數
ajax:
$.ajax({ type:"post", url:"/test/saveUser", data:JSON.stringify({"username":"chen","nickname":"alien"}), contentType:"json/application" dataType:"json", success: function(data){ console.log(data); } });
用此格式get請求參數傳遞不過去,不會把json串解析成參數
並且須要添加 contentType:」json/application」
3.標準參數模式
形如:
「username=chen&nickname=alien」
ajax:
$.ajax({ type:"post", url:"/test/saveUser", data:"username=chen&nickname=alien", dataType:"json", success: function(data){ console.log(data); } });
$(「#form1」).serialize() 就是把表單的數據拼成這個格式的字符串!
三、總結
post請求能用一、二、3類型傳遞參數
get請求能用一、3類型傳遞參數
$(「#form1」).serialize() 是將對應表單中的input的name和value進行拼裝,最後拼成3類型的字符串
【$(function)相關】
場景描述:
①$(function(){})外部調用$(function(){})內部的方法時報錯,是沒搞懂$(function(){})執行時間致使;
②多個$(function(){})時調用方法時,A調B裏面的方法時報錯,是沒搞懂$(function(){})內部的變量及函數做用域致使;
$(function(){})的執行時間
參考地址:https://blog.csdn.net/sadleaflzh/article/details/81584144
緣由大致描述:
$(function() {}) 是$(document).ready(function()的簡寫。
DOM加載完成即頁面全部的html標籤(包括圖片等)都加載完了,即瀏覽器已經響應完,所有展示到瀏覽器界面上以後,執行$(function() {})中的內容;
多個$(function(){})的函數調用問題
參考地址:http://www.javashuo.com/article/p-mxkpmqxw-bs.html
緣由大致描述:
每一個$(function(){})都是一個函數,函數都有本身的做用域,匿名函數至關於私有的函數,須要放到外邊當作全局函數;