asp.net jquery ajax json:交换数据的简单例子

(在两个回复post的帮助下解决问题 – 见下文)

我将非常感谢帮助获得在浏览器(使用JavaScript / JQuery)和ASP.NET(使用Visual Studio 2010)之间交换数据JSON数据的简单示例。

当我单击按钮时,执行以下操作:

 bClick = function () { var myData = { "par": "smile" }; alert("hi "+myData.par); $.ajax({ url: "ericHandler.ashx", data: myData, dataType: 'json', type: 'POST', contentType: 'application/json; charset=utf-8', success: function (data) { alert("DIDit = " + data.eric); }, error: function (data, status, jqXHR) { alert("FAILED:" + status); } }); }  

在Visual Studio中,我有以下与ashx文件关联的代码。 当我运行它并单击按钮时,一切都按预期工作,除了我没有看到myData传递给C#代码 – 我在调试器中查看context.Request.QueryString并显示“{}”。

我见过使用的例子

 string stringParam = (string)Request.Form("stringParam"); 

但似乎没有定义Visual Studio“请求”。 我想要做的就是看到数据双向移动,而我似乎只有一半。 任何帮助,将不胜感激。

–C#代码 –

 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace CSASPNETSerializeJsonString { ///  /// Summary description for ericHandler ///  public class ericHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { string rq = context.Request.QueryString["par"]; context.Response.ContentType = "application/json"; context.Response.Write("{\"eric\":\"12345\"}"); } public bool IsReusable { get { return false; } } } 

}

*已解决首先,如果您想将一些表单参数从JavaScript发送到ASP.NET,则应在下面的第二篇文章中使用ajax调用,并且不要对数据使用stringify。 换句话说,如果不指定发送的数据是json,则缺少任何规范默认为’application / x-www-form-urlencoded’)。 这将导致对象的字段以“url”格式(field = X&field2 = Y&field3 = Z ..)附加,因此使用Request.Form [“field”]显示在ASP.NET中。

其次,如果你真的想发送JSON数据,那么指定这个类型就是发送的内容(就像我上面所做的那样)并在接收端使用InputStream。 然后需要进一步解析所接收的字符串以获得字段值。

在我的示例中,我发送回JSON数据,将其“手动”编码为字符串。 我相信有一个JSON序列化例程,以便可以发送C#对象。

其他资源建议删除contentType: 'application/json; charset=utf-8', 来自AJAX调用的contentType: 'application/json; charset=utf-8',

  $.ajax({ url: "ericHandler.ashx", data: myData, dataType: 'json', type: 'POST', success: function (data) { alert("DIDit = " + data.eric); }, error: function (data, status, jqXHR) { alert("FAILED:" + status); } }); 

读取服务器端的值:

 string myPar = context.Request.Form["par"]; 

你也可以尝试:

 string json = new StreamReader(context.Request.InputStream).ReadToEnd(); 

这里提到的是: https : //stackoverflow.com/a/8714375/139917

我立即开始工作了。 这是它最基本的forms:

HTML:

        

代码背后:

 <%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Web; public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Hello World"); } public bool IsReusable { get { return false; } } }