如何使用ASP.NET和jQuery返回JSON

zmeyuzjn  于 2022-12-22  发布在  jQuery
关注(0)|答案(5)|浏览(138)

我不知道如何用代码返回JSON数据。

苏丹

$(function () {
$.ajax({
        type: "POST",
        url: "Default.aspx/GetProducts",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // How to return data here like a table???  
            $("#Second").text(msg.d);
            //alert(msg.d);
        }
    }); 
});

默认值.aspx.cs的C#

[WebMethod]
public static string GetProducts()
{
   var products  = context.GetProducts().ToList();   
   return What do I have to return ????
}
htzpubme

htzpubme1#

你离这儿不远你需要这样做:

[WebMethod]
public static string GetProducts()
{
  // instantiate a serializer
  JavaScriptSerializer TheSerializer = new JavaScriptSerializer();

  //optional: you can create your own custom converter
  TheSerializer.RegisterConverters(new JavaScriptConverter[] {new MyCustomJson()});

  var products = context.GetProducts().ToList();   

  var TheJson = TheSerializer.Serialize(products);

  return TheJson;
}

你可以进一步减少这段代码,但为了清晰起见,我还是这样写了。事实上,你甚至可以这样写:

return context.GetProducts().ToList();

这将返回一个json字符串,我更喜欢更明确的,因为我使用自定义转换器,也有Json.net,但框架的JavaScriptSerializer工作得很好,开箱即用。

jdzmm42g

jdzmm42g2#

仅返回对象:它将被解析为JSON。

public Object Get(string id)
{
    return new { id = 1234 };
}
jfewjypa

jfewjypa3#

这种结构对我很有效--我在一个小型任务管理应用程序中使用过它。
控制器:

public JsonResult taskCount(string fDate)
{
  // do some stuff based on the date

  // totalTasks is a count of the things I need to do today
  // tasksDone is a count of the tasks I actually did
  // pcDone is the percentage of tasks done

  return Json(new {
    totalTasks = totalTasks,
    tasksDone = tasksDone,
    percentDone = pcDone
  });
}

在 AJAX 调用中,我按如下方式访问数据:

.done(function (data) {
  // data.totalTasks
  // data.tasksDone
  // data.percentDone
});
8yparm6h

8yparm6h4#

Asp.net 非常擅长将.net对象自动转换为json,如果在webmethod中返回List对象,那么它应该返回一个json/javascript数组,我的意思是不应该将返回类型改为string(因为这是您认为客户端所期望的)。如果您返回一个。net数组从webmethod返回一个javaScript数组给客户端。它实际上对更复杂的对象不太有效,但对简单的数组数据来说就很好了。
当然,接下来就由您来做您需要在客户端做的事情了。
我会这样想:

[WebMethod]
public static List GetProducts()
{
   var products  = context.GetProducts().ToList();   
   return products;
}

实际上不需要初始化任何自定义转换器,除非您的数据比简单的行/列数据更复杂

b4qexyjb

b4qexyjb5#

试着用这个吧,它对我很有效

// 

   varb = new List<object>();

 // Example 

   varb.Add(new[] { float.Parse(GridView1.Rows[1].Cells[2].Text )});

 // JSON  + Serializ

public string Json()
        {  
            return (new JavaScriptSerializer()).Serialize(varb);
        }

//  Jquery SIDE 

  var datasets = {
            "Products": {
                label: "Products",
                data: <%= getJson() %> 
            }

相关问题