2013-07-02 1 views
1

AJAX를 사용하여 js 파일에서 aspx 페이지로 웹 메서드를 호출하고 있습니다. 메소드를 [WebMethod]로 설정했고 페이지는 System.Web.Ui.Page 클래스에서 상속받습니다. 여전히 JSON 형식을 호출하는 ajax 함수에 반환하지 않습니다. 웹 방법 여기AJAX에서 JSON을 반환하지 않는 웹 메서드

  $.ajax({ 
       type: "POST", 
       url: "/WebServiceUtility.aspx/CustomOrderService", 
       data: "{'id': '2'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (message) { 
        ShowPopup(message); 
       } 
       }); 
     function ShowPopup(result) { 
      if (result.d != "") { 
       request=result.d; 
      } 
     } 

그리고있다 :

using System; 
using System.IO; 
using System.Net; 
using System.Text; 
using System.Web.Services; 

namespace SalesDesk.Global 
{ 
public partial class WebServiceUtility : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

     [WebMethod] 
     public string CustomOrderService(string id) 
     { 
      string result; 
      // code logic which sets the result value 
      result="some value"; 

      return result; 
     } 

    } 
} 

내가 파이어 폭스 브라우저에서 F12을 눌러 네트워크 호출에서 요청/응답을 확인 여기

은 JS 파일에있는 AJAX 호출입니다 JSON 탭이 전혀 표시되지 않습니다. 대신 HTML 탭이 표시됩니다.

특별히 응답 헤더를 설정해야합니까? 여기 정확히 내가 뭘 놓치고 있니?

EDIT : 해결책을 찾았습니다. 궁극적으로, 어떤 일을하는 것은 성공의 방법으로 콜백 함수와 $ .getJSON() 호출은 아래

 result = "..."; 
     Response.Clear(); 
     Response.ContentType = "application/json"; 
     Response.Write(result); 
     Response.Flush(); 
     Response.End(); 

모두 감사합니다 여러분의 소중한 제안에 대한 웹 페이지의 코드입니다.

return new JavaScriptSerializer().Serialize(result); 
+0

서버에서'Content-type : application/json' 헤더를 설정해야합니다. 또한 적절한 JSON 문자열을 반환해야합니다. –

답변

5

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public string CustomOrderService(string id) 
     { 
      string result; 
      // code logic which sets the result value 
      result="some value"; 

      return result; 
     } 
0

내가없는 볼 수있는 유일한 것은이를하고있다 : 당신의 반환 데이터를 변경,

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

또한 :

0

사용 정적 문자열를 참조하십시오.

[WebMethod] 
    public static string CustomOrderService(string id) 
    { 
     string result; 
     // code logic which sets the result value 
     result="some value"; 

     return result; 
    }