zoukankan      html  css  js  c++  java
  • 关于 jquery+ajax向asp.net传递json的问题研究(呕心沥血、柳暗花明)

    第一种方法:字典的方法

     //质检不合格
                $('#Button3').click(function () {
                    if (!confirm('确定质检不合格吗?'))
                        return;
    
                    var obj = new Object();
                    obj.x1 = 123;
                    obj.y1 = "abc";
                    //var jsonText = $.toJSON(obj);
                    var jsonText = JSON.stringify(obj); 
                    //这个时候,jsonText 传递到asp.net后,asp.net 收到字典对象,而不是字符串的json对象
                    //jsonText = "'" + jsonText + "'";
                    alert(jsonText);
    
                    $.ajax({
                        type: "POST",
                        url: "Default3.aspx/ss",
                        data: "{'str':" + jsonText + "}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        async: true,
                        cache: false,
                        success: function (msg) {
                            alert(msg.d);
                        },
                        error: function (x, e) {
                            alert("The call to the server side failed. " + x.responseText);
                        }
                    });
    
    
                    return false;
    
                }); //这里是结束
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Newtonsoft.Json;
    
    public partial class Default3 : System.Web.UI.Page
    {
    
    
        public class qhftest
        {
    
            public int my_x1 { get; set; }
            public string my_y1 { get; set; }
    
    
            public qhftest(int x1, string y1)
            {
                this.my_x1 = x1;
                this.my_y1 = y1;
            }
    
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
          
        }
        [System.Web.Services.WebMethod]
        public static string ss(object str)
        {
    
            //qhftest ee = JsonConvert.DeserializeObject<qhftest>(str.ToString());
    
            //return ee.my_x1.ToString()+"---"+ee.my_y1.ToString();
    
            /*
             * 先转为Dictionary对象,再转为json字符串,再转为一个具体的对象
             */
            Dictionary<string, object> tmp = (Dictionary<string, object>)str;
    
            qhftest ee = JsonConvert.DeserializeObject<qhftest>(JsonConvert.SerializeObject(tmp, Formatting.Indented));
    
            string s = "";
    
            foreach (string key in tmp.Keys)
            {
               s +="----" +String.Format("Key = {0}", key);
            }
    
            return tmp.ToString(); 
            
     
        }
    }

    第二种方法:呕心沥血的方法

     1  //质检不合格
     2             $('#Button3').click(function () {
     3                 if (!confirm('确定质检不合格吗?'))
     4                     return;
     5 
     6                 var obj = new Object();
     7                 obj.x1 = 123;
     8                 obj.y1 = "abc";
     9                 //var jsonText = $.toJSON(obj);
    10                 var jsonText = JSON.stringify(obj);
    11                 jsonText = "'" + jsonText + "'";
    12                 /*
    13                 * 加了两边的单引号后,就变成字符串了,asp.net就非常容易转换
    14                 */
    15                 
    16 
    17                 $.ajax({
    18                     type: "POST",
    19                     url: "Default3.aspx/ss",
    20                     data: "{'str':" + jsonText + "}",
    21                     contentType: "application/json; charset=utf-8",
    22                     dataType: "json",
    23                     async: true,
    24                     cache: false,
    25                     success: function (msg) {
    26                         alert(msg.d);
    27                     },
    28                     error: function (x, e) {
    29                         alert("The call to the server side failed. " + x.responseText);
    30                     }
    31                 });
    32 
    33 
    34                 return false;
    35 
    36             }); //这里是结束
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Newtonsoft.Json;
    
    public partial class Default3 : System.Web.UI.Page
    {
    
    
        public class qhftest
        {
    
            public int my_x1 { get; set; }
            public string my_y1 { get; set; }
    
    
            public qhftest(int x1, string y1)
            {
                this.my_x1 = x1;
                this.my_y1 = y1;
            }
    
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
          
        }
        [System.Web.Services.WebMethod]
        public static string ss(object str)
        {
    
            qhftest ee = JsonConvert.DeserializeObject<qhftest>(str.ToString());
    
            return ee.my_x1.ToString()+"---"+ee.my_y1.ToString();
    
     
        }
    }
  • 相关阅读:
    Windows中安装Davinci
    IIS服务启动提示当文件已存在时,无法创建该文件,183
    HandyControl与LiveCharts使用出现图形位置偏移问题
    自定义面板优化统计标题卡
    WPF实现高仿统计标题卡
    C#开发微信小程序(一)
    VS2019 开发Django(一)------环境配置
    Python实现PDF转Words(文字提取)
    Python项目打包成二进制
    Python RSA加解密文本文件
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/10454763.html
Copyright © 2011-2022 走看看