基本的简单Asp.net + jQuery + JSON示例
本文关键字:jQuery JSON 示例 net Asp 简单 | 更新日期: 2023-09-27 17:52:41
我正在学习如何从Javascript/jQuery对服务器进行简单的调用。我一直在努力学习,但找不到那些简单步骤的教程。
我想用两个参数(一个DateTime和一个String)向服务器发送一条消息,并返回一个DateTime。我想通过JSON来实现。
- 服务器中的代码看起来如何(仅结构)? 我应该在服务器端做一些特别的事情吗?那安全方面呢?我如何在jQuery中实现调用?
- 我该如何处理这个结果呢?
我对代码结构最感兴趣。
我发现下面的答案很好地让我开始。然而,我最近偶然发现了全ASP。. NET, LINQ, jQuery, JSON, Ajax教程。这是一个非常棒的,非常有教学意义的一步一步,我想和将来遇到这个问题的任何人分享。
有几种方法可以做到这一点;这将作为一个单独的例子。
你可以为你的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上发布了这个代码:https://codereview.stackexchange.com/questions/3208/basic-simple-asp-net-jquery-json-example
如果你正在使用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
}
);
注意,参数的名称(例如dateParam, stringParam)需要与你的服务方法期望的参数名称相同。此外,你的服务需要将结果格式化为JSON,回调中的data参数将包含你的服务发回的任何内容(例如文本,xml, JSON等)。
参见jQuery文档中的$。ajax,美元。,美元。post: http://api.jquery.com/jQuery.ajax/, http://api.jquery.com/jQuery.get/, http://api.jquery.com/jQuery.post/
这里的示例代码使用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
}
//创建一个类
Public class Cars {
public string carName;
public string carRating;
public string carYear;
}