我的大部分AJAX調用都與jQuery中的daya屬性一起使用,以傳遞奇異值。但有時我需要將JSON中的結構傳遞給服務器以供進一步處理。我知道如何,我知道它的工作原理。但它似乎只有90%的時間工作。coldfusion ajax json - 空請求主體
安裝程序是Railo 4.2和IIS,它們的大多數設置仍然是默認設置。我也無法在本地重現這一點,我有Coldfusion服務器而不是Railo。 我也在Coldbox框架中工作。
發送JSON數據jQuery的代碼如下:
var oJSON = {'param1': param1, 'param2': param2, 'param3': param3};
$.ajax({
type: "POST",
url: uAjax + "?action=someurlparameter",
data: JSON.stringify(oJson),
contentType: "application/json; charset=utf-8",
datatype: "json",
success: function(oData)
{
// do something
}
});
ColdFusion的CFC來處理輸入數據進行以下操作:
<cffunction name="cashup" returntype="struct" output="false" hint="handle json data">
<cfargument name="event">
<cfargument name="rc">
<cfargument name="prc">
<!--- get json data --->
<cfset LOCAL.oJson = deserializeJSON(toString(getHttpRequestData().content)) />
<cfreturn someService.someProcessing(LOCAL.oJson) />
</cffunction>
這看起來非常簡單的代碼給我。但由於某些原因,這些調用失敗的原因有10%,因爲請求主體爲空。我不知道爲什麼。它不能是正在發送的數據,因爲再次單擊按鈕而不刷新頁面,從而重試ajax調用,大部分時間都會產生一個良好的調用,這是通過WITH請求主體實現的。
編輯1:
以JSON樣本數據:
"MoneyLocation": {
"MoneyLocationPaymentTypeCountList": [
{
"Amount": 175.28,
"Description": "CASH ",
"IdPaymentType": 2,
"ImageLocation": ""
},
{
"Amount": 0,
"Description": "Generieke bon ",
"IdPaymentType": 62,
"ImageLocation": ""
}
],
"IdTill": -1,
"IdMoneyLocation": 35
}
似乎不太可能是這個問題,因爲它是一個遠程請求,因此CFC實例應該是暫時的,但是你有一個un-'VAR'變量'oJson'。我至少會把它解決掉。 –
你的網絡選項卡告訴你10%的時間(當它發送一個空的內容時) –
@KevinB:網絡選項卡告訴我數據正在以正確的方式發送到請求中的服務器。 Javascript發送一個正確的JSON對象,但getHttpRequestData()。的內容是完全空的。 – dreagan