摘要:于是為了使這個(gè)生效,只能將這個(gè)配置改成之外的任意字符串。。。然后在創(chuàng)建文件再創(chuàng)建文件我的目的是內(nèi)調(diào)用的時(shí)候,響應(yīng)的狀態(tài)碼變成。其實(shí)這也算另一個(gè)吧,然道不應(yīng)該響應(yīng)一個(gè)錯(cuò)誤的狀態(tài)碼但是沒(méi)辦法,鑒于團(tuán)隊(duì)的平均水平,用開(kāi)發(fā)仍然是最佳選擇。
ThinkPHP 3.2.3 的 ajax_rerurn 這個(gè) Hook 是有邏輯錯(cuò)誤的……
源代碼在這里:
protected function ajaxReturn($data,$type="",$json_option=0) { if(empty($type)) $type = C("DEFAULT_AJAX_RETURN"); switch (strtoupper($type)){ case "JSON" : // 返回JSON數(shù)據(jù)格式到客戶端 包含狀態(tài)信息 header("Content-Type:application/json; charset=utf-8"); exit(json_encode($data,$json_option)); case "XML" : // 返回xml格式數(shù)據(jù) header("Content-Type:text/xml; charset=utf-8"); exit(xml_encode($data)); case "JSONP": // 返回JSON數(shù)據(jù)格式到客戶端 包含狀態(tài)信息 header("Content-Type:application/json; charset=utf-8"); $handler = isset($_GET[C("VAR_JSONP_HANDLER")]) ? $_GET[C("VAR_JSONP_HANDLER")] : C("DEFAULT_JSONP_HANDLER"); exit($handler."(".json_encode($data,$json_option).");"); case "EVAL" : // 返回可執(zhí)行的js腳本 header("Content-Type:text/html; charset=utf-8"); exit($data); default : // 用于擴(kuò)展其他返回格式數(shù)據(jù) Hook::listen("ajax_return",$data); } }
其中 C("DEFAULT_AJAX_RETURN") 獲取到的配置默認(rèn)是 json。
很明顯 Hook::listen("ajax_return",$data) 所在的位置,決定了它正常情況都不會(huì)被調(diào)用。
不管你將它改成 xml、jsonp、還是 eval。
于是為了使這個(gè) Hook 生效,只能將 DEFAULT_AJAX_RETURN 這個(gè)配置改成 json、xml、jsonp、eval 之外的任意字符串。。。比如我將它改成 "DEFAULT_AJAX_RETURN" => "hook"。
然后在創(chuàng)建文件:/Application/Admin/Conf/tags.php
array("AdminBehaviorsajaxBehavior"), );
再創(chuàng)建文件:/Application/Admin/Behaviors/ajaxBehavior.class.php
我的目的是:Controller 內(nèi)調(diào)用 $this->error("tmdphp") 的時(shí)候,響應(yīng)的 HTTP 狀態(tài)碼變成 500。
這樣客戶端才會(huì)正確的執(zhí)行 jQuery.ajax 的 error 回調(diào)。其實(shí)這也算另一個(gè) Bug 吧,ThinkController::error 然道不應(yīng)該響應(yīng)一個(gè)錯(cuò)誤的 HTTP 狀態(tài)碼?
但是沒(méi)辦法,鑒于團(tuán)隊(duì)的平均水平,用 ThinkPHP 開(kāi)發(fā)仍然是最佳選擇。
等會(huì)去 Github 提交個(gè) PR 看看會(huì)不會(huì)被采納。。。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/30334.html
摘要:本月產(chǎn)品層面的升級(jí)主要集中在語(yǔ)言源碼構(gòu)建方面,全面支持和并兼容開(kāi)發(fā)框架。研發(fā)團(tuán)隊(duì)在這一個(gè)月中對(duì)底層組件進(jìn)行了升級(jí)與調(diào)整,修復(fù)了個(gè)中等級(jí)別以上的。因?yàn)檫@個(gè)焦點(diǎn),有廣泛的支持,規(guī)格易于實(shí)現(xiàn)。 全面支持一條命令安裝云幫平臺(tái)、調(diào)整SDN網(wǎng)絡(luò)組件、8 個(gè)中等級(jí)別以上的bug修復(fù)、云幫社區(qū)版 迎來(lái)2017年3月升級(jí)版本,本次升級(jí)主要集中在平臺(tái)底層服務(wù),以及云幫的私有化安裝部署的流程上,針對(duì)SDN網(wǎng)...
摘要:數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用簡(jiǎn)稱即基于的后臺(tái)管理系統(tǒng)官方文檔地址在線體驗(yàn)地址賬戶密碼線上倉(cāng)庫(kù)在線地址源代碼下載克隆直接下載本地部署運(yùn)行環(huán)境要求建議配置虛擬域名若不清楚,請(qǐng)自行解決之,方便接下來(lái)開(kāi)展你的開(kāi)發(fā)工作。 喜歡就Star,不只是Fork; 想要分享的動(dòng)機(jī)才是驅(qū)動(dòng)力,而技術(shù)僅僅是一種方法。 數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用 showImg(https://seg...
摘要:數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用簡(jiǎn)稱即基于的后臺(tái)管理系統(tǒng)官方文檔地址在線體驗(yàn)地址賬戶密碼線上倉(cāng)庫(kù)在線地址源代碼下載克隆直接下載本地部署運(yùn)行環(huán)境要求建議配置虛擬域名若不清楚,請(qǐng)自行解決之,方便接下來(lái)開(kāi)展你的開(kāi)發(fā)工作。 喜歡就Star,不只是Fork; 想要分享的動(dòng)機(jī)才是驅(qū)動(dòng)力,而技術(shù)僅僅是一種方法。 數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用 showImg(https://seg...
摘要:即基于拿來(lái)即用高性能后臺(tái)管理系統(tǒng)官方文檔地址在線體驗(yàn)地址賬戶密碼線上倉(cāng)庫(kù)在線地址源代碼下載克隆直接下載本地部署運(yùn)行環(huán)境要求建議配置虛擬域名若不清楚,請(qǐng)自行解決之,方便接下來(lái)開(kāi)展你的開(kāi)發(fā)工作。 新版本在線體驗(yàn)地址已經(jīng)上線,歡迎體驗(yàn)? ---2017-01-14 喜歡就Star,不只是Fork; 想要分享的動(dòng)機(jī)才是驅(qū)動(dòng)力,而技術(shù)僅僅是一種方法。 ====================...
閱讀 1991·2023-04-26 01:58
閱讀 2073·2019-08-30 11:26
閱讀 2798·2019-08-29 12:51
閱讀 3571·2019-08-29 11:11
閱讀 1239·2019-08-26 11:54
閱讀 2171·2019-08-26 11:48
閱讀 3540·2019-08-26 10:23
閱讀 2463·2019-08-23 18:30