0

私は何時間もこれに取り組んできましたが、まだ正しく理解できていません... 誰か私を悲惨な状態から解放してください!

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))" と呼んだときだったと思います。

4

1 に答える 1