php采用ajax數(shù)據(jù)提交post與post常見(jiàn)方法總結(jié)_第1頁(yè)
php采用ajax數(shù)據(jù)提交post與post常見(jiàn)方法總結(jié)_第2頁(yè)
php采用ajax數(shù)據(jù)提交post與post常見(jiàn)方法總結(jié)_第3頁(yè)
php采用ajax數(shù)據(jù)提交post與post常見(jiàn)方法總結(jié)_第4頁(yè)
php采用ajax數(shù)據(jù)提交post與post常見(jiàn)方法總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、php采用ajax數(shù)據(jù)提交post與post常見(jiàn)方法總結(jié)在很多情況下我們使用ajax是不會(huì)有什么問(wèn)題的, 但有時(shí)會(huì)碰到ajax數(shù)據(jù)提交post不完整的問(wèn)題,以下是為大家搜索的php采用ajax數(shù)據(jù)提交post與post常見(jiàn)方法總結(jié),希望能給大家?guī)?lái)幫助!更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們!下邊是一個(gè)標(biāo)準(zhǔn)的ajax請(qǐng)求代碼,正常情況下是不會(huì)有任何問(wèn)題的,但是,在特定情況下就會(huì)出現(xiàn)問(wèn)題,比如,username二fdas&321的時(shí)候,或者參數(shù)值中出現(xiàn)了&符號(hào),經(jīng)過(guò)了N多遍測(cè)試,發(fā)現(xiàn)數(shù)據(jù)都傳輸了, 但是打印出來(lái)數(shù)據(jù)是半截, 最后仔細(xì)觀察頭信息發(fā)現(xiàn)傳輸 的頭不對(duì), 問(wèn)題定位到了js上, 發(fā)現(xiàn)字符串拼接的方式會(huì)

2、造成這種 問(wèn)題username二fdas&321 &p assword二p assword這樣就是錯(cuò)誤了的。所 以我們需要把傳輸?shù)臄?shù)據(jù)變成username:username,passsword:password這種json格式即可避免 問(wèn)題!示例代碼如下:$(.submit).bind(click,function()varusername=$(inputname=username).val();$.ajax(url:post,type:post,dataType:json,data:username=+username+&password=+password,timeout:5000,err

3、or:function()alert(1),suess:function()補(bǔ)充:四種常見(jiàn)的P OST提交數(shù)據(jù)方式1app licatio n/x-form-urle ncoded這應(yīng)該是最常見(jiàn)的POST提交數(shù)據(jù)的方式了。瀏覽器的原生form表單,如果不設(shè)置enctype屬性,那么最終就會(huì)以這樣(無(wú)關(guān)的請(qǐng)求頭在本文中都省略掉了):POST.jb51./1.1Content-Type:application/x-form-urlencoded;charset=utf-8title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3首先,Content-Type被指定

4、為application/x-form-urlencoded;application/x-form-urlencoded方式提交數(shù)據(jù)。請(qǐng)求類(lèi)似于下面其次,提交的數(shù)據(jù)按照key1=val1 &key2二val2的方式進(jìn)行編碼,key和val都進(jìn)行了URL轉(zhuǎn)碼。大部分服務(wù)端語(yǔ)言都對(duì)這種方式有很好的支持。例如PHP中,$_POSTtitle可以獲取到title的值,$_POSTsub可以得到sub數(shù)組。很多時(shí)候,我們用Ajax提交數(shù)據(jù)時(shí),也是使用這種方式。例如JQuery和QWrap的Ajax,Content-Type默認(rèn)值都是application/x-form-urlencoded;charse

5、t=utf-82mult ip art/form-data這又是一個(gè)常見(jiàn)的POST數(shù)據(jù)提交的方式。我們使用表單上傳文件時(shí),必須讓form的enctyped等于這個(gè)值。直接來(lái)看一個(gè)請(qǐng)求示例:POST.jb51./1.1Content-Type:multipart/form-data;boundary=-WebKitFormBoundaryrGKCBY7qhFd3TrwAWebKitFormBoundaryrGKCBY7qhFd3TrwAContent-Disposition:form-data;name=texttitleWebKitFormBoundaryrGKCBY7qhFd3TrwACon

6、tent-Disposition:form-data;name=file;filename=chrome.pngContent-Type:image/pngPNG.contentofchrome.png.。WebKitFormBoundaryrGKCBY7qhFd3TrwA-的字段,為了避免與正文內(nèi)容重復(fù),boundary很長(zhǎng)很復(fù)雜。然后Content-Type里指明了數(shù)據(jù)是以mutipart/form-data來(lái)編碼,本次 請(qǐng)求的boundary是什么內(nèi)容。消息主體里按照字段個(gè)數(shù)又分為多個(gè) 結(jié)構(gòu)類(lèi)似的部分,每部分都是以-boundary開(kāi)始,緊接著內(nèi)容描述 信息,然后是回車(chē),最后是字段具體內(nèi)

7、容(文本或二進(jìn)制)。如果傳輸 的是文件,還要包含文件名和文件類(lèi)型信息。消息主體最后以-boundary-標(biāo)示結(jié)束。關(guān)于mutipart/form-data的詳細(xì)定義,請(qǐng) 前往rfc1867查看。這種方式一般用來(lái)上傳文件,各大服務(wù)端語(yǔ)言對(duì)它也有著良好的支持。上面提到的這兩種POS數(shù)據(jù)的方式,都是瀏覽器原生支持的,而且現(xiàn)階段原生form表單也只支持這兩種方式。但是隨著越來(lái)越多 的Web站點(diǎn),尤其是WebApp全部使用Ajax進(jìn)行數(shù)據(jù)交互之后,我 們完全可以定義新的數(shù)據(jù)提交方式,給開(kāi)發(fā)帶來(lái)更多便利。3app licati on/json這個(gè)Content-Type作為響應(yīng)頭大家肯定不陌生。實(shí)際上,

8、現(xiàn)在越來(lái)越多的人把它作為請(qǐng)求頭,用來(lái)告訴服務(wù)端 消息主體是序列化后的JSON字符串。由于JSON規(guī)范的流行,除了低 版本IE之外的各大瀏覽器都原生支持JSON.stringify,服務(wù)端語(yǔ)言 也都有處理JSON勺函數(shù),使用JSON不會(huì)遇上什么麻煩。application/jsonJSON格式支持比鍵值對(duì)復(fù)雜得多的結(jié)構(gòu)化數(shù)據(jù),這一點(diǎn)也很有 用。記得我?guī)啄昵白鲆粋€(gè)項(xiàng)目時(shí),需要提交的數(shù)據(jù)層次非常深,我就 是把數(shù)據(jù)JSON序列化之后來(lái)提交的。不過(guò)當(dāng)時(shí)我是把JSON字符串作為val,仍然放在鍵值對(duì)里,以x-form-urlencoded方式提交。Google的AngularJS中的Ajax功能,默認(rèn)就是

9、提交JSON字符串。例如下面這段代碼:vardata=title:test,sub:1,2,3;$.post(url,data).suess(function(result);最終發(fā)送的請(qǐng)求是:POST.jb51./1.1Content-Type:application/json;charset=utf-8title:test,sub:1,2,3這種方案,可以方便的提交復(fù)雜的結(jié)構(gòu)化數(shù)據(jù),特別適合RESTful的接口。各大抓包工具如Chrome自帶的開(kāi)發(fā)者工具、Firebug、Fiddler,都會(huì)以樹(shù)形結(jié)構(gòu)展示JSON數(shù)據(jù),非常友好。但也有些服務(wù)端語(yǔ)言還沒(méi)有支持這種方式,例如php就無(wú)法通過(guò)$_

10、POST寸象從上面的請(qǐng)求中獲得內(nèi)容。這時(shí)候,需要自己動(dòng)手處理下:在請(qǐng)求頭中Content-Type為application/json時(shí),從php:/input里獲得原始 輸入流,再json_decode成寸象。一些php框架已經(jīng)開(kāi)始這么做了。當(dāng)然AngularJS也可以配置為使用x-form-urlencoded方式提交數(shù)據(jù)。4text/xml之前提到過(guò)XML-RPC(XMLRemoteProcedureCall。)它是一種使用作為傳輸協(xié)議,XML#為編碼方式的遠(yuǎn)程調(diào)用規(guī)范。典型的XML-RPC請(qǐng)求是這樣的:POST.jb51./1.1Content-Type:text/xmlexamples.getStateName41XML-RPC協(xié)議簡(jiǎn)單、功能夠用,各種語(yǔ)言的實(shí)現(xiàn)都有。它的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論