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