Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何将jsonObject和json数组作为ajaxdata传递给Asp.net_Jquery_Json_Webforms - Fatal编程技术网

Jquery 如何将jsonObject和json数组作为ajaxdata传递给Asp.net

Jquery 如何将jsonObject和json数组作为ajaxdata传递给Asp.net,jquery,json,webforms,Jquery,Json,Webforms,假设我有一个json对象和一个json数组。我需要它将这些作为ajaxdata传递到asp.net 下面是myCode代码 function insertNewBookingInfo(jsonstaticobj1232, jsonarray646) { try { debugger; //jsonstaticobj1232 is a json object //jsonarray646 is a json array

假设我有一个json对象和一个json数组。我需要它将这些作为ajaxdata传递到asp.net

下面是myCode代码

function insertNewBookingInfo(jsonstaticobj1232, jsonarray646) {
      try {
          debugger;
         //jsonstaticobj1232 is a json object
         //jsonarray646 is a json array
          var dataAjax = { "jsonstaticobj1232": jsonstaticobj1232, "jsonarray646": jsonarray646 };

          console.log(JSON.stringify(dataAjax));
          jQuery.ajax({
              url: 'WalkReserve.aspx/insertNewBookingInfo',
              type: "POST",
              data: JSON.stringify(dataAjax),
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function (data) {
                  debugger;
                  console.log(data.d);
              },
              error: function (result) {
                  debugger;
                  console.log('Failed' + result.responseText);
              }

          });
      } catch (e) {
          debugger;
          console.log(e.message);
          alert(e.message);
      }

  }
服务器代码

 [WebMethod]
            public static string insertNewBookingInfo(string jsonstaticobj1232, string jsonarray646) //, string jsonarray646
            {

       // BAL.insertNewBookingInfo(jsonstaticobj1232, jsonstaticobj1232); //, jsonarray646
        return "ABC";
    }

现在我得到了这个错误


问题是什么。我遗漏了什么吗???

你为什么不在客户机中字符串化你的数据,并在服务器上反序列化

在客户端:

data: JSON.stringify(dataAjax)
和在服务器中:

System.Web.Script.Serialization.JavaScriptSerializer o = new System.Web.Script.Serialization.JavaScriptSerializer();
o.Deserialize<MyClass>(stringified_dataAjax);
//OR
o.ConvertToType<MyClass>(stringified_dataAjax);

在服务器中,您传递的数据是
string
(JSON格式)
,如果您有这样的javascript对象,您需要将其转换为特定的类来访问您想要的typesafe属性

{name: "mark", age: 35}
当您对要更改为的对象进行字符串化时

"{"name":"mark","age":35}"
当您将其传递给服务器时,您需要将该字符串转换为一个类,以访问您想要的属性,为此,您需要创建一个服务器端类,其属性符合javascript对象属性的名称和类型,类似于

class anyClasName // it doesn't matter
    {
        public string name { get; set; } // the name of property must be exactly same as your javascript object property
        public byte age { get; set; }    // and the type of property should be something which property of javascript object can be convert to
    }

在am1r_5h的帮助下,形成更多帮助。我发现将传入数据类型更改为动态解决了我的问题

public static string insertNewBookingInfo(dynamic jsonstaticobj1232, dynamic jsonarray646) 
        {

            // BAL.insertNewBookingInfo(jsonstaticobj1232, jsonstaticobj1232); //, jsonarray646
            return "ABC2";
        }

解决了我的问题。

而且我在这里发布了一个关于使用
WebMethod
的答案,我认为这对您很有用,

首先,您有一个问题:您的JSON无效。JSON中的字符串用双引号括起来。感谢您指出这一点。我已经修复了它,但现在又出现了一个错误。我已经在这里发布了新的问题。您能解释一下除了创建类之外,在服务器上还需要做什么吗。假设“insertNewBookingInfo”是服务器中的函数名,因为我的注释中的字符太长,我必须将其作为答案发布,请参阅答案将字符串更改为动态解决了我的问题。谢谢你的帮助
public static string insertNewBookingInfo(dynamic jsonstaticobj1232, dynamic jsonarray646) 
        {

            // BAL.insertNewBookingInfo(jsonstaticobj1232, jsonstaticobj1232); //, jsonarray646
            return "ABC2";
        }