2012-02-27 1 views
0

저는 ASPDotNetStorefront에서 XML 패키지 (주로 irrelivant)로 작업 중입니다. 기본적으로 나는 폼을 '제출'하는 필드와 버튼이있는 폼을 가지고있다. 사실 버튼을 필드의 값을 쿼리 문자열로 변환 한 다음 POST 대신 GET을 수행하고 싶습니다.양식을 Querystring으로 변환

나는 JavaScript, 아마 jQuery와 같은 것을 할 수 있다고 상상할 것이다. 그러나 나는 그것을 어떻게 할 것인지 잘 모르겠다. 이상적으로는, 내가 부를 수있는 간단한 기능을 원합니다.

ASP.Net을 사용하고 있으며 필드의 실제 값을 상태 정보가 아닌 쿼리 문자열로 변환하고 싶습니다. 이것은 검색 양식을위한 것입니다. 사용

$.ajax({ 
    url: 'url/Action', 
    type: 'GET', 
    data: $('#formId').serialize() 
}) 

:

jQuery로
+3

에 대한 간단한 자바 스크립트, 또는 왜 하시겠습니까 이 작업을 수행? –

+0

이 페이지가 ASP.Net 솔루션에서 호스팅되기 때문에 양식을 GET 메소드로 변환하는 솔루션은 아무 것도 없으므로 URL에 맞지 않는 VIEWSTATE 및 기타 항목이 POST에 있습니다. 나는 그것을 필요로하지 않는다. 나는 이것이 선택이었다라는 것을 모르고 있었다. 그래서 나는 나중에 그것을 나의 뒤의 호주머니에 넣을 것이다. – cjbarth

답변

1
Response.Redirect("Webform2.aspx?Name=" + 
this.txtName.Text + "&LastName=" + 
this.txtLastName.Text); 

WebForm2.aspx에 당신은 페이지 사이에 데이터를 전송하는 AJAX를 사용하여 JQuery와이

for (int i =0;i < Request.QueryString.Count;i++) 
{ 
Response.Write(Request.QueryString[i]); 
} 

같이 할 수 있습니다. 다음 샘플 코드 이 내가 AJAX없이

<div style="width:350px"> 
    <div style="background:#CCC"> <a href="#" id="editName">Edit</a></div> 
    <div id="divView"><asp:literal id="litName" runat="server"/></div> 
    <div id="divEdit" style="display:none"></div> 
</div>  
var options = { 
       method: 'POST', 
       url: 'ChangeName.aspx', 
       after: function(response) { 
        $("div#divView").html(response).show(); 
        $("div#divEdit").empty().hide(); 
      $("a#editName").show(); 
       } 
      }; 
      //bind to form's onsubmit event 
      $("form#ChangeName").ajaxForm(options); 

예 AJAX

를 사용하는 Using jQuery for AJAX in ASP.NET : codeproject 예를 발견 한 최고의 기사입니다.당신은 단지`방법 = "GET" '속성 대신 GET 사용하는 양식을 변경할 수 없습니다 쿼리 문자열

<script lang=”javascript” type=”text/javascript”> 
function testQueryStrings() 
{ 
window.location = “search.aspx?q=abc&type=advanced”; 
} 
</script> 

<input type=”button” id=”btn” value=”Test Query Strings” onclick=”testQueryStrings()” /> 

search.aspx

<script lang=”javascript” type=”text/javascript”> 
var qrStr = window.location.search; 
var spQrStr = qrStr.substring(1); 
var arrQrStr = new Array(); 
// splits each of pair 
var arr = spQrStr.split(‘&’); 
for (var i=0;i<arr.length;i++){ 
// splits each of field-value pair 
var index = arr[i].indexOf(‘=’); 
var key = arr[i].substring(0,index); 
var val = arr[i].substring(index+1); 

// saves each of field-value pair in an array variable 
arrQrStr[key] = val; 
} 

document.write(“<h1>Search parameter: “+arrQrStr["q"]+”. Extra parameter: “+arrQrStr["type"]+”</h1>”); 
+0

좀 더 효율적으로, 나는 여기에있는 것과 비슷한 패턴을 사용하여 이것을 손으로 코딩 할 것입니다. 네가 제안한 것이 나를 위해 일하지 않는다. 'onclick = "window.location.href = 'searchadv.aspx? SearchTerm ='+ SearchTerm.value; return (false); '' – cjbarth

+0

멋진. 나는 당신이 AJAX없이 예를 든 것과 거의 똑같이 사용하여 끝냈다. Query String을 이용한 간단한 Javascript. 실제로 각 매개 변수 값을 포함하기 전에 각 매개 변수 값이 기본값과 다른지 확인하는 루틴을 만들었지 만 여기에서 보여준 내용은 내가 필요한 것입니다. 네가 만든 일상이 너무 좋다. – cjbarth

0

정말, 당신은 당신의 HTML에 <form> 태그의 method 속성을 변경해야합니다.

.NET 구성 요소가 생성하는 태그를 직접 제어 할 수없는 경우 페이지가로드 될 때 항상 <form> 태그를 조작하고 JavaScript로 속성을 설정할 수 있습니다.

또는 양식의 제출 버튼에 클릭 이벤트를 바인딩하고 이벤트를 취소 할 수 있으며 (예 : false을 반환하여) GET을 직접 처리 할 수 ​​있습니다.

0

<form method="POST"> 대신 <form method="GET">으로 설정할 수 있습니다. Javascript가 필요하지 않습니다 (페이지를 새로 고치지 않으려는 경우 제외). (이 jQuery를 태그 이후)와

<input type="submit" value="get"> 

을 :

jQuery('input[type=submit]').click(function() { this.form.method = 'GET'; }); 

을 ...하지만 북마크-수있는 데이터 나 메이크업에 들어갈 수 있음을 형성

1

이 작업을 수행 할 수 중요한 변경 사항은 사용자가 혼란스러워하는 것처럼 들리지만 최종 사용자 제어 기능을 사용하려면 게시에서 전환 할 다른 이유를 생각할 수 없습니다.

항상 데이터를 가져오고 싶다면 JS를 사용하여 DOM을 즉석에서 처리하는 대신 브라우저로 보낸 소스를 수정해야합니다.

+0

시도했을 때 URL이 너무 긴 메시지가 나타납니다. 모든 종류의 __EVENTTARGET 정보가 URL에 포함되었습니다. – cjbarth

+0

북마크 및 기타 탐색 요소에 미치는 영향과 간단한 jQuery를 보여주는 방법에 대한 설명은 다음을 참조하십시오. – cjbarth

+0

@cjbarth - 그런 다음 데이터를 압축하는 방법 (테이블을 조회하고, 더 짧은 키 이름을 지정하고, 기본 10 대신에 16을 표현하는 등)을 수행하거나 필요없는 데이터를 제거해야합니다. – Quentin