私は何時間もこれに取り組んできましたが、まだ正しく理解できていません... 誰か私を悲惨な状態から解放してください!
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}}"
それでも私のWebメソッドでは、calcnameは「何もない」で、コンポーネントは「0.0」です
JSON.Stringify を使用しない場合、Web メソッドで null オブジェクトを取得します。calcName が渡されたが、コンポーネントの値がまだゼロだったコードのバージョンが 1 つあったと思います。それはちょうど "return postData(JSON.stringify(calcParams))" と呼んだときだったと思います。