dojo ajax xhrPost 請求頁面后台服務函數


前台前台代碼:

 <script>
        function Sum()
        {
            dojo.ready
            (
                function ()
                {
                    //這里組織的Json對象的Key必須和后台服務函數的參數一致,不然導致請求服務失敗
                    var paraData = dojo.toJson({ "Value1": dojo.byId("t_a").value, "Value2": dojo.byId("t_b").value });

                    var xhrArgs =
                        {
                            url: "TestAjAx.aspx/Sum",

                            handleAs: "json",

                            headers: { "Content-Type": "application/json" },

                            postData: paraData,

                            load: function (response, ioArgs) { ResFun(response) },//成功后回調函數

                            error: function (error, ioArgs) { alert(error.message); }//出錯時回調函數
                        };


                    dojo.xhrPost(xhrArgs);
                }
            );
        }
        function ResFun(response)
        {
            var result = eval("(" + response.d + ")");//通過后台服務函數返回的是Object,需要取值(.d) 
            //為什么要 eval這里要添加 “("("+data+")");//”呢? 
            //原因在於:eval本身的問題。 由於json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。 
            //加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化為對象,而不是作為語 句(statement)來執行。舉一個例子,例如對象字面量{},如若不加外層的括號,那么eval會將大括號識別為JavaScript代碼塊的開始 和結束標記,那么{}將會被認為是執行了一句空語句。所以下面兩個執行結果是不同的:
            //alert(eval("{}"); // return undefined
            //alert(eval("({})");// return object[Object] 
            //對於這種寫法,在JS中,可以到處看到。 
            //如: (function()) {}();  做閉包操作時等。

            dojo.byId("d_result").innerHTML = result.Value1 + " + " + result.Value2 + " = " + result.SumValue;
        }


    </script>

HTML:

<body>
        <div>
            <table>
                <tr>
                    <td>數值1:</td>
                    <td><input type="text" id="t_a" /></td>
                    <td>數值2:</td>
                    <td><input type="text" id="t_b" /></td>
                    <td><button id="b_Add" onclick="Sum()">計算</button></td>
                    <td><div id="d_result"></div></td>
                </tr>
            </table>
        </div>
</body>


后台代碼:

[WebMethod]
        public static string Sum(string Value1,string Value2)
        {
            int v1 = 0;
            int v2 = 1;
            int.TryParse(Value1,out v1);
            int.TryParse(Value2,out v2);

            var result = new
            {
                Value1 = Value1,
                Value2 = Value2,
                SumValue = v1 + v2
            };

            return JsonConvert.SerializeObject(result);
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM