久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP 中使用ajax時一些常見錯誤總結整理

這篇文章主要介紹了PHP 中使用ajax時一些常見錯誤總結整理的相關資料,需要的朋友可以參考下

PHP作為后端時,前端js使用ajax技術進行相互信息傳送時,經常會出錯誤,對于新手來說有些手足無措。總結錯誤、經驗,以后隨時回顧。

第一個問題,當前端無錯誤的情況下,頁面調試也顯示沒有問題,但是ajax獲取不到后端php文件發送過來的信息:

前端代碼如下:

$.ajax({
  url:'1.php',//目的php文件
  data:{"age":12,"name":'zh'},//傳送的數據
  type:‘post',//方式post/get
  dataType:'json',//數據傳送格式
  success:function(response)
  {
  console.log(response);
  },
  error:function(response)
  {
  console.log(response);
  console.log("錯誤");
  }
});

php后端代碼如下:

$postAge = $_POST['age'];
$postName = $_POST['name'];
echo $postAge;
echo $postName;

頁面出現后,F12調試查看如下所示:

狀態碼都沒問題,status是200,responseReady是4,說明在html發送給php文件信息過程是沒有問題的。而且php也返回了信息。可是為什么程序走了error而沒有走success呢?

這時需要小心!由于php后端多個echo沒有把數據整理為json格式。也就是說php返回的是一個字符串不是json格式的數據。有人說加上json_encode()呢?這樣也是不行的,因為json_encode()的函數作用沒搞清,百度仔細看下。json_encode()與json_decode()是一對。

json_encode(json),把json整理為json格式的數據。在上例中,就算php后端代碼改寫為:echo json_encode(postAge);和echojsonencode(postName);也是不對的。因為這樣僅僅是把單個postAge和postName整理為了json格式,但是由于是2個返回,既是2個response,在瀏覽器調試頁面也可以看到1個post回來2個response。這樣導致2個json格式的數據返回給前端是就不再是json格式的數據(我理解為json污染,方便理解)。也就是單個數據是json格式但是多個json格式數據“胡亂”結合在一起不按照json格式合并在一起就會產生“污染”。導致整體數據格式混亂無法被識別,這種情況者數據處理和傳輸時隨時都見得到。

json_decode(json,true/false)函數是把json整理為數組或者object(理解為類)。true是強制裝換為(關聯)數組,false是默認的會轉換為object形式的數據。

回到本文提出的例子上。

既然傳送回來的數據不再是json格式的數據,那么就是dataType的問題了。

dataType是告訴瀏覽器檢查傳送的數據格式。如果不寫,瀏覽器不會去檢查數據格式,寫了就一定檢查而且必須滿足格式要求。本例中,由于寫了為json格式,但是傳回來時不是json格式,所以瀏覽器認為傳輸過程中出現了錯誤,所以走了error而沒有走success。

這時最好的方式是修改php代碼,將echo的內容改為一個數組,用數組的信形式把整體數據整理為json格式進行傳送(json_encode),避免發生錯誤。

當然也可以使用另一種方法,類似作弊的方法,直接注釋掉(或者不寫)dataType,這樣瀏覽器就不會去檢查數據的形式而是根據數據的形式智能的判斷,類似蒙混過關。

 以下是dataType的W3school解釋:

這里寫圖片描述

值得注意的是,后端php文件中多個echo輸出后,數據返回確是一起返回的,既是修改正確后,前端得到的數據是2個數據合為一個字符串的形式數據。本例子中得到的數據是12zh。

當然還有很多細節問題了,比如php后端只能用echo或者die(),不能用return,這是因為return是只在服務器端中返回數據使用,而echo是打印數據,將數據從服務器端打印出來,給前端。return只能在服務器端,或者前端單一的返回。而die()的強大就不提了,直接終止后端php程序的形式返回數據。

還有比如在$,ajax({});中每一行既是一個參數,參數之間是逗號隔開,多個數據是在{}內,隔開是用逗號等等。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

我們在用pbootcms建站時候,經常用到的標簽就是時間,我們在這里整理了詳細調用方法,希望能夠幫到大家。 首頁/列表標簽: 列表頁時間:[list:date] 效果:2021-12-06 09:12:30 列表頁時間:
我們要實現調用網站的留言數或者文章總數,這個要怎么操作呢? 這個我們可以用到pbootcms的萬能SQL標簽直接調用,我們先來看下這個標簽: 用于自定義任意查詢語句并循環輸出 使用
標簽作用:用于根據條件輸出不同內容 1、IF語句格式: {pboot:if(a==b)} 內容1 {else} 內容2 {/pboot:if} 使用提示: 對于非數字類的條件均為字符串類型,請加上引號,如:{pboot:if([list:author]
適用范圍:全站任意地方均可使用 標簽作用:用于執行站內搜索功能 1、最簡單的搜索示例 form action={pboot:scaction} method=get 關鍵字:input type=text name=keyword button type=submit搜索/button /form 表
適用范圍:內容列表頁使用,其實也可以用在首頁等 標簽作用:用于對內容列表進行篩選 1、使用步驟 1)到后臺對模型添加擴展字段,字段類型選擇單選或多選,同時填寫單選或多選
1、基本標簽: {pboot:ucenter} 個人中心地址 {pboot:login} 登錄地址 {pboot:register} 注冊地址 {pboot:umodify} 資料修改地址 {pboot:logout} 退出登錄地址 {pboot:upload} 文件上傳AJAX接口 {pboot:islogin} 是否登
主站蜘蛛池模板: 欧美日韩亚洲一区 | 国产精品伦理一区 | 久久久久久久香蕉 | 国产美女在线免费观看 | 国产精品污www一区二区三区 | 91在线一区 | 成人欧美一区二区三区1314 | 古装三级在线播放 | 精品欧美乱码久久久久久 | 四虎影院美女 | av大全在线观看 | 国产精品精品视频一区二区三区 | 亚洲一区二区三区在线视频 | 久久国产精品久久久久 | 中文字幕乱码亚洲精品一区 | 日韩欧美三区 | 亚洲三区在线观看 | 日本天天操 | 日本黄色短片 | 黄色av大片 | japanhd美女动 | 天堂中文资源在线 | 国产情侣一区 | 国产精品精品视频 | 91久久北条麻妃一区二区三区 | 天天看天天干 | 亚洲精品视频观看 | 欧美一级二级视频 | 一级黄色淫片 | 欧美a级成人淫片免费看 | 日韩视频在线播放 | 一区二区三区国产 | 一区在线播放 | 久久综合九色综合欧美狠狠 | 人人看人人射 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 日韩国产一区二区 | 祝你幸福电影在线观看 | 国产在线观看不卡一区二区三区 | 日韩精品一区二区三区中文在线 | 久久综合九九 |