source

ASP에서 JSON을 반환하는 방법NET 및 jQuery

gigabyte 2023. 2. 28. 23:35
반응형

ASP에서 JSON을 반환하는 방법NET 및 jQuery

제 코드로 JSON 데이터를 반환하는 방법을 알 수 없습니다.

JS

$(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);
        }
    }); 
});

Default.aspx.cs의 C#

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

멀지 않은 곳에서 다음과 같은 작업을 수행해야 합니다.

[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바로 사용할 수 있습니다.

오브젝트를 반환하기만 하면 됩니다.JSON에 파서가 됩니다.

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

이 구조는 나에게 적합하다 - 나는 작은 태스크 관리 어플리케이션에서 그것을 사용했다.

컨트롤러:

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
});

Asp.net은 .net 객체를 json으로 자동 변환하는 데 매우 능숙합니다.웹 메서드로 반환된 List 객체는 json/javascript 배열을 반환해야 합니다.즉, 메서드에서 데이터를 반환할 때 반환 유형을 문자열로 변경하지 마십시오(클라이언트가 예상하는 문자열이기 때문에).웹 메서드에서 .net 배열을 반환하면 JavaScript 배열이 클라이언트에 반환됩니다.실제로는 복잡한 오브젝트에서는 그다지 잘 동작하지 않지만 단순한 어레이 데이터에서는 문제가 없습니다.

물론 클라이언트 측에서 필요한 작업을 수행하는 것은 사용자의 몫입니다.

이런 생각이 들 거예요.

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

단순한 행/컬러 데이터보다 데이터가 복잡하지 않는 한 커스텀 컨버터를 초기화할 필요가 없습니다.

이걸 써봐, 나한테 딱 맞아.

  // 

   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() %> 
            }

언급URL : https://stackoverflow.com/questions/18244696/how-to-return-json-with-asp-net-jquery

반응형