0
我已經在這裏好幾個小時了,但仍然沒有得到它的正確...有人請讓我擺脫我的痛苦!Json對象沒有被傳遞給web api方法
的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
Server代碼:
<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}}"
,但在我的web方法,calcname是「一無所有」和組件是「0.0」
如果我不使用JSON.Stringify我在Web方法得到一個空對象。我想我有一個代碼版本,其中calcName被傳遞,但組件值仍然爲零。那是當我剛纔調用「返回postData(JSON.stringify(calcParams))」我想。
的jQuery做所有的編碼/字符串化的你 - 你可以直接傳遞對象。除了按照建議進行服務器端編輯之外,OP應該這樣做:'return postData({calcParams2:calcParams})' – Adam
Doh!我創建了「calcparams2」作爲複製測試,並忘記更改第二個屬性名稱。男人,那是愚蠢的。然而......只有喬尼S的答案有效。我必須在那裏有JSON.stringify調用,否則web方法什麼都不會收到。我試過({calcParams2:calcParams}),沒有任何東西可以通過。出於某種原因,我需要在那裏「串起來」才能起作用。我不知道爲什麼... – TheMook