我的客戶羣終於關閉了Coldfusion 8,現在我可以利用Coldfusion 9的Application.cfc -> onCFCRequest
事件。我有一個測試場景設置,我的結果不是我期待的。我有我打電話產生像這樣一個有效XML
響應的方法...Coldfusion onCFCRequest將XML的返回類型更改爲WDDX
Response Header: Content-Type:application/xml;charset=UTF-8
Response:
<?xml version="1.0" encoding="UTF-8"?>
<rows><row id="10000282742505"><cell/><cell> ...
現在經過我介紹onCFCRequest
事件中,我得到這個回(這打破了我的網格)...
Response Header: Content-Type:application/xml;charset=UTF-8
Response:
<wddxPacket version='1.0'><header/><data><string><rows><row id="10000282742505"><cell></cell><cell> ...
這裏是事件...
<cffunction name="onCFCRequest" access="public" returntype="Any" output="true">
<cfargument type="string" name="cfc" required="true">
<cfargument type="string" name="method" required="true">
<cfargument type="struct" name="args" required="true">
<cfscript>
// OnCFCRequest security hole fix as detailed here: http://blog.adamcameron.me/2013/04/its-easy-to-create-security-hole-in.html
var o = createObject(ARGUMENTS.cfc);
var metadata = getMetadata(o[ARGUMENTS.method]);
if (structKeyExists(metadata, "access") && metadata.access == "remote"){
return invoke(o, ARGUMENTS.method, ARGUMENTS.args);
}else{
throw(type="InvalidMethodException", message="Invalid method called", detail="The method #method# does not exists or is inaccessible remotely");
}
</cfscript>
<cfreturn />
</cffunction>
我怎樣才能得到onCFCRequest通過在相同的格式,再響應微粒功能返回?
我最終可能會嘗試這一點,但首先我想弄清楚爲什麼我不能簡單地通過相同的格式的響應。
'application/xml'是首選:http://stackoverflow.com/questions/4832357/whats-the-difference-between-text-xml-vs-application-xml-for-webservice-respons; '應用程序/ json'是首選:http://stackoverflow.com/questions/477816/what-is-the-correct-json-content-type – Henry
謝謝!我更改了它們,並在IE7及以上版本,Chrome,Firefox和Safari中進行了測試。一切都很好。你知道,直到我經歷這個練習時,我總是將'JSON'作爲'text/plain'返回,然後必須將它變成我成功函數中的一個對象:'resultObj = $ .parseJSON(data);'What這是一種快樂,它發現''parseJSON()'行不再需要。設置MIME類型可以正確處理這個問題。簡直不敢相信我從未偶然發現過。 – gfrobenius