我的大部分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