2012-06-29 1 views
3

게시물을 다시 볼 수있는 링크가 있습니다.httphandler로 데이터를 보내는 방법

otherOptionsContainer.Controls.Add(new LiteralControl(String.Format("<a href='{0}' onclick='return {1}.exportItems();'>Export</a><br/>", exportURL, this._clientInstanceName))); 

과 HTTP 처리기는

   byte[] ms_excel = some_params_from_code 
       MemoryStream ms_excel_tream = new MemoryStream(ms_excel); 
       context.Response.ContentType = CONTENT_TYPE_MS_EXCEL; 
       String dateNow=DateTime.Now.ToString("dd-MMM-yyyy_HH_mm", new System.Globalization.CultureInfo("en-US")); 
       context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=Export_{0}.xls", dateNow)); 
       ms_excel_tream.WriteTo(context.Response.OutputStream); 
       ms_excel_tream.Close(); 

나는 HttpHandler를에 some_params_from_code를 보내야합니다. 나는 몇 가지 제한이있다. 1.이

$.ajax({ 
    url: "_Layouts/blah/blahHandler.ashx", 
    contentType: "application/json; charset=utf-8", 
     data: { 'key1':'value1'}, 
     dataType: "json", 
     success: OnComplete, 
     error: OnFail 
    }); 

같은 Ajax를 사용하여 데이터를 전송하기 위해 나는 노력했다 쿠키

를 사용하지 마십시오 쿼리 문자열 2를 사용하지 않지만 HTTP를 핸들러는 다른 응답 객체를 작성합니다. 또는 다른 컨텍스트가 처리기로 제공됩니다.

+0

여기서'ssome_params_from_code '는 어디에서 온 것입니까? 서버 측? 클라이언트 측에서 json 객체를 전달 했습니까? 그것의 reallty 취소 – YavgenyP

+0

ssome_params_from_code는 서버 측에서 온 것으로되어 있습니다. json을 사용하는 나의 예에서는 서버 측에서 클라이언트 측으로 전달하고 클라이언트 측에서는 json을 사용하여 전달합니다. – Alexandr

+1

그래서 다른 모든 개체와 마찬가지로 서버 측에서 사용하고 있습니다 (쿼리 문자열/쿠키는 여기에 있습니다). db로부터 얻을 수있는 것이 있다면 db 호출로 얻거나 세션 의존 객체 인 경우 세션에서 가져올 수 있습니다.이 변수에 대한 자세한 정보와 정확히 작동하지 않는 것은 무엇입니까? – YavgenyP

답변

3

유일한 제한 사항은 쿼리 문자열과 쿠키를 사용하지 않기 때문에 양식 게시를 사용하지 않는 이유는 무엇입니까? 이 더미 예제를 고려하십시오. 당신의 HTML에서

:

<form id="form" action="DefaultHandler.ashx" method="post" style="display: none;"> 
    <input type="hidden" name="field1" value="abc" /> 
    <input type="hidden" name="field2" value="xyz" /> 
</form> 
<a href="#" onclick="form.submit(); return false;">Handle</a> 

핸들러에서 :

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.ContentType = "text/plain"; 
    context.Response.Write("Received:\n"); 
    context.Response.Write(context.Request.Form["field1"]); 
    context.Response.Write("\n"); 
    context.Response.Write(context.Request.Form["field2"]); 
    context.Response.Write("\n"); 
} 

이 요구를 조정합니다. 자바 스크립트에서 폼을 동적으로 생성하고 필요에 따라 필드를 설정할 수 있습니다.