将 jquery json 传递到 asp.net httphandler

Posted

技术标签:

【中文标题】将 jquery json 传递到 asp.net httphandler【英文标题】:pass jquery json into asp.net httphandler 【发布时间】:2012-09-06 05:52:07 【问题描述】:

只是不要明白我做错了什么.. 我一直在寻找几十个类似的问题,但仍然有误解...... 当我从 JS 调用 CallHandler 函数时,我总是收到“请求失败”警报。 请帮帮我。

JS/Jquery:

function CallHandler() 
    $.ajax(
        url: "DemoHandler.ashx",
        contentType: "application/json; charset=utf-8",
        type: 'POST',
        dataType: "json",
        data: ["id": "10000", "name": "bill","id": "10005", "name": "paul"],
        success: OnComplete,
        error: OnFail
    );
    return false;


function OnComplete(result) 
    alert(result);

function OnFail(result) 
    alert('Request Failed');

asp.net c# 背后的代码:

public void ProcessRequest(HttpContext context)

  javascriptSerializer jsonSerializer = new JavaScriptSerializer();
  string jsonString = HttpContext.Current.Request.Form["json"];

  List<Employee> emplList = new List<Employee>();
  emplList = jsonSerializer.Deserialize<List<Employee>>(jsonString);

  string resp = "";
  foreach (Employee emp in emplList)
  resp += emp.name + " \\ ";
  
  context.Response.Write(resp);


public class Employee

  public string id  get; set; 
  public string name  get; set; 

【问题讨论】:

【参考方案1】:

试试

data: JSON.stringify([id: "10000", name: "bill",id: "10005", name: "paul"])

编辑我删除了属性名称中的引号

另外,需要读取JSON字符串in other way

string jsonString = String.Empty;

HttpContext.Current.Request.InputStream.Position = 0;
using (StreamReader inputStream = new StreamReader(HttpContext.Current.Request.InputStream))

     jsonString = inputStream.ReadToEnd();

一个可行的解决方案

public void ProcessRequest(HttpContext context)

    var jsonSerializer = new JavaScriptSerializer();
    var jsonString = String.Empty;

    context.Request.InputStream.Position = 0;
    using (var inputStream = new StreamReader(context.Request.InputStream))
    
        jsonString = inputStream.ReadToEnd();
    

    var emplList = jsonSerializer.Deserialize<List<Employee>>(jsonString);
    var resp = String.Empty;

    foreach (var emp in emplList)
    
        resp += emp.name + " \\ ";
    

    context.Response.ContentType = "application/json";
    context.Response.ContentEncoding = Encoding.UTF8;
    context.Response.Write(jsonSerializer.Serialize(resp));


public class Employee

    public string id  get; set; 
    public string name  get; set; 


public bool IsReusable

    get
    
        return false;
    

【讨论】:

ty,我更改了您发布的代码,但仍然只收到“请求失败”警报。 欢迎您,祝您编码愉快! 您可以使用 JSON.Net 以获得良好的性能。james.newtonking.com/projects/json-net.aspx

以上是关于将 jquery json 传递到 asp.net httphandler的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有 JSON、jQuery 的复杂对象数组发布到 ASP.NET MVC 控制器?

如何将json返回的数据绑定到asp.net中的jquery gridview?

使用 jQuery 将 JSON 对象成功发送到 ASP.NET WebMethod

从 JQuery 将 JSON 发布到 ASP.NET MVC 4 操作

jQuery 将 null 而不是 JSON 发布到 ASP.NET Web API

如何将json返回的数据绑定到asp.net中的jquery gridview?