ajax
AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML)雷则,是指一種創(chuàng)建交互式網(wǎng)頁應用的網(wǎng)頁開發(fā)技術(shù)。
通過在后臺與服務器進行少量數(shù)據(jù)交換肪笋,AJAX 可以使網(wǎng)頁實現(xiàn)異步更新月劈。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新藤乙。
傳統(tǒng)的網(wǎng)頁(不使用 AJAX)如果需要更新內(nèi)容猜揪,必須重載整個網(wǎng)頁頁面。HTTP Header
HTTP(HyperTextTransferProtocol) 即超文本傳輸協(xié)議坛梁,目前網(wǎng)頁傳輸?shù)牡耐ㄓ脜f(xié)議而姐。HTTP協(xié)議采用了請求/響應模 型,瀏覽器或其他客戶端發(fā)出請求划咐,服務器給與響應拴念。就整個網(wǎng)絡資源傳輸而言,包括message-header和message-body兩部分褐缠。首先傳 遞message-header政鼠,即http header消息 。http header 消息通常被分為4個部分:general header, request header, response header, entity header队魏。但是這種分法就理解而言公般,感覺界限不太明確。根據(jù)維基百科對http header內(nèi)容的組織形式胡桨,大體分為Request和Response兩部分俐载。微信小程序設置了合法請求域名,小程序一直提示不在合法域名列別中
解決辦法:https://my.oschina.net/u/3066247/blog/796057
關(guān)于wx.request產(chǎn)生 “Failed to load resource: the server responded with a status of 400 (Bad Request)” 的解決辦法
//xxxx.js
var request_URL='https://xxx';
Page({
data:{},
onLoad:function(){
wx.request({
url:request_URL,
data:{},
header:{
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data)
}
})
}
})
解決辦法:將ContentType改為 "application/x-www-form-urlencoded" 登失;
application/x-www-form-urlencoded: 窗體數(shù)據(jù)被編碼為名稱/值對遏佣,這是標準的編碼格式;
當action為get時候揽浙,瀏覽器用x-www-form-urlencoded的編碼方式把form數(shù)據(jù)轉(zhuǎn)換成一個字串(name1=value1&name2=value2...)状婶,然后把這個字串a(chǎn)ppend到url后面意敛,用?分割,加載這個新的url膛虫。multipart/form-data: 窗體數(shù)據(jù)被編碼為一條消息草姻,頁上的每個控件對應消息中的一個部分;
當action為post時候稍刀,瀏覽器把form數(shù)據(jù)封裝到http body中撩独,然后發(fā)送到server。 如果沒有type=file的控件账月,用默認的application/x-www-form-urlencoded就可以了综膀。 但是如果有type=file的話,就要用到multipart/form-data了局齿。瀏覽器會把整個表單以控件為單位分割剧劝,并為每個部分加上Content-Disposition(form-data或者file),Content-Type(默認為text/plain),name(控件name)等信息,并加上分割符(boundary)抓歼;text/plain: 窗體數(shù)據(jù)以純文本形式進行編碼讥此,其中不含任何控件或格式字符;
http://blog.csdn.net/mhmyqn/article/details/25561535
最近在看書時才真正搞明白谣妻,服務器為什么會對表單提交和文件上傳做特殊處理萄喳,因為表單提交數(shù)據(jù)是名值對的方式,且Content-Type為application/x-www-form-urlencoded蹋半,而文件上傳服務器需要特殊處理他巨,普通的post請求(Content-Type不是application/x-www-form-urlencoded)數(shù)據(jù)格式不固定,不一定是名值對的方式湃窍,所以服務器無法知道具體的處理方式闻蛀,所以只能通過獲取原始數(shù)據(jù)流的方式來進行解析匪傍。
jquery在執(zhí)行post請求時您市,會設置Content-Type為application/x-www-form-urlencoded,所以服務器能夠正確解析役衡,而使用原生ajax請求時茵休,如果不顯示的設置Content-Type,那么默認是text/plain手蝎,這時服務器就不知道怎么解析數(shù)據(jù)了榕莺,所以才只能通過獲取原始數(shù)據(jù)流的方式來進行解析請求數(shù)據(jù)。