C# 基本简单Asp.net+;jQuery+;JSON示例

C# 基本简单Asp.net+;jQuery+;JSON示例,c#,jquery,asp.net,ajax,json,C#,Jquery,Asp.net,Ajax,Json,我试图学习如何从Javascript/jQuery对服务器进行简单调用。我一直在努力学习,但找不到有这些简单步骤的教程 我想用两个参数(一个DateTime和一个字符串)向服务器发送一条消息,然后返回一个DateTime。我想通过JSON实现这一点 服务器中的代码看起来如何(仅限结构) 在服务器端有什么特别的事情需要我做吗?那么安全性呢 如何在jQuery中实现调用 我将如何处理结果 我对代码结构最感兴趣 更新 我发现下面的答案非常有助于我开始学习。然而,我最近偶然发现了。这只是一个奇妙的、

我试图学习如何从Javascript/jQuery对服务器进行简单调用。我一直在努力学习,但找不到有这些简单步骤的教程

我想用两个参数(一个DateTime和一个字符串)向服务器发送一条消息,然后返回一个DateTime。我想通过JSON实现这一点

  • 服务器中的代码看起来如何(仅限结构)
  • 在服务器端有什么特别的事情需要我做吗?那么安全性呢
  • 如何在jQuery中实现调用
  • 我将如何处理结果
我对代码结构最感兴趣

更新


我发现下面的答案非常有助于我开始学习。然而,我最近偶然发现了。这只是一个奇妙的、非常有教育意义的步骤,我想与将来遇到这个问题的任何人分享。

如果您使用jQuery,您可以通过GET或POST来完成

$.get ('<url to the service>',
       { dateParam: date, stringParam: 'teststring' },
       function(data) {
          // your JSON is in data
       }
);

$.post ('<url to the service>',
       { dateParam: date, stringParam: 'teststring' },
       function(data) {
          // your JSON is in data
       }
);
$.get(“”,
{dateParam:date,stringParam:'teststring'},
功能(数据){
//您的JSON在数据中
}
);
$.post(“”,
{dateParam:date,stringParam:'teststring'},
功能(数据){
//您的JSON在数据中
}
);
请注意,中的参数名称(例如dateParam、stringParam)需要与服务方法所需的参数名称相同。此外,您的服务需要将结果格式化为JSON,回调中的数据参数将包含您的服务返回的任何内容(例如文本、xml、JSON等)


请参阅jQuery文档中的$.ajax、$.get、$.post:,

有几种方法可以做到这一点;这将作为一个单独的例子

您可以为jQuery代码编写如下代码:

urlToHandler = 'handler.ashx';
jsonData = '{ "dateStamp":"2010/01/01", "stringParam": "hello" }';
$.ajax({
                url: urlToHandler,
                data: jsonData,
                dataType: 'json',
                type: 'POST',
                contentType: 'application/json',
                success: function(data) {                        
                    setAutocompleteData(data.responseDateTime);
                },
                error: function(data, status, jqXHR) {                        
                    alert('There was an error.');
                }
            }); // end $.ajax
接下来,您需要在ASP.net项目中创建一个“通用处理程序”。在通用处理程序中,使用
Request.Form
读取作为json传入的值。通用处理程序的代码可能如下所示:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class handler : IHttpHandler , System.Web.SessionState.IReadOnlySessionState
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";

        DateTime dateStamp = DateTime.Parse((string)Request.Form["dateStamp"]);
        string stringParam = (string)Request.Form["stringParam"];

        // Your logic here

        string json = "{ \"responseDateTime\": \"hello hello there!\" }";
        context.Response.Write(json);    
    }
看看结果如何。这会让你开始的


更新:我在CodeReview StackExchange上发布了这段代码:

这里是使用jquery ajax调用和服务器端webmethod返回jSon格式数据的示例代码。 Jquery:

$(‘#myButton’).on(‘click’,function(){
    var aData= [];
     aData[0] = “2010”; 
     aData[0]=””    
     var jsonData = JSON.stringify({ aData:aData});
       $.ajax({
                type: "POST",
                url: "Ajax_function/myfunction.asmx/getListOfCars",  //getListOfCars is my webmethod 
                data: jsonData,
                contentType: "application/json; charset=utf-8",
                dataType: "json", // dataType is json format
                success: OnSuccess,
                error: OnErrorCall
            });
   
function OnSuccess(response.d)) {
console.log(response.d)
}
function OnErrorCall(response)) { console.log(error); }
});
Codebehind:这里有一个webmethod,它返回json格式的数据,即汽车列表

[webmethod]
public List<Cars> getListOfCars(list<string> aData) 
{
    SqlDataReader dr;
    List<Cars> carList = new List<Cars>();
         
         using (SqlConnection con = new SqlConnection(cn.ConnectionString))
         {
            using (SqlCommand cmd = new SqlCommand())
            {
               cmd.CommandText = "spGetCars";
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Connection = con;
               cmd.Parameters.AddWithValue("@makeYear", aData[0]);
               con.Open();
               dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
               if (dr.HasRows)
               {
                  while (dr.Read())
                   {    
                       string carname=dr[“carName”].toString();
           string carrating=dr[“carRating”].toString();
            string makingyear=dr[“carYear”].toString();
           carList .Add(new Cars{carName=carname,carRating=carrating,carYear=makingyear}); 
        }
                }
            }
          }
        return carList 
        }

注意:如果你的json有问题,一定要在谷歌上找到一个好的json验证器。另外注意:文本“jQuery in Action”中有很好的例子说明了你问题的jQuery方面。我正在试验,会让你知道的!准备好调试器。我第一次经历这个过程时,每一步都犯了错误。一定要一步一步地完成javascript代码。如果您在让调试器停止任何特定的javascript代码行时遇到问题,请使用
debugger
关键字。你们知道我的代码会出什么问题吗?这与这个答案几乎相同。你有你提到的文章的源代码吗?我很感兴趣,但我不清楚使用什么文件。更具体地说,我应该创建一个ASP.NET网站吗?或者用C语言编写的类应该包含在web服务中吗?我只是不确定哪些文件类型可以组织一些代码。请注意,
get
post
的默认内容类型是
application/x-www-form-urlencoded;字符集=UTF-8
。因此,这不会通过Json向服务器发送数据。警告:此代码虽然指向正确的方向,但仍有许多错误。
Public class Cars {
public string carName;
public string carRating;
public string carYear;
}