我已经在这几个小时了,但仍然没有做对......请有人让我摆脱痛苦!
javascript:
var calcParams = {}
calcParams.calcName="gwp_mat";
calcParams.components=124.332;
//return manager.impactCalc(calcName, componentArray)
return postData("{calcParams2:" + JSON.stringify(calcParams) + "}")
.then(querySucceeded)
.fail(queryFailed);
function postData(cp) {
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json",
url: "/api/breeze/testCalc",
data: cp,
success: function (data) {
alert(data);
return data;
},
error: function (error) {
jsonValue = jQuery.parseJSON(error.responseText);
}
});
}
模型:
Public Class calcParams2
Public calcName As String
Public calcNumber As Double
End Class
服务器代码:
<System.Web.Services.WebMethod()> _
Public Function testCalc(cp As calcParams2) As Double
Dim c As New calcs
Return cp.calcNumber
End Function
如果我调试它,javascript postData 函数中的“cp”参数是:
"{calcParams2:{"calcName":"gwp_mat","components":124.332}}"
然而在我的网络方法中,calcname 是“nothing”,components 是“0.0”
如果我不使用 JSON.Stringify 我会在我的 web 方法中得到一个空对象。我想我有一个版本的代码,其中传递了 calcName 但组件值仍然为零。我认为那是我刚刚调用“return postData(JSON.stringify(calcParams))”的时候。