<a href=“…”> 태그를 사용하여 POST 양식을 제출하려면 어떻게해야합니까?


답변:


95

대신 버튼을 사용하는 경우 JavaScript가 필요하지 않습니다.

<form action="your_url" method="post">
    <button type="submit" name="your_name" value="your_value" class="btn-link">Go</button>
</form>

링크처럼 보이도록 버튼 스타일을 지정할 수 있습니다 . 예를 들면 다음과 같습니다.

.btn-link {
    border: none;
    outline: none;
    background: none;
    cursor: pointer;
    color: #0000EE;
    padding: 0;
    text-decoration: underline;
    font-family: inherit;
    font-size: inherit;
}

10
귀하의 "방법"은 a태그를 사용하지 않기 때문 입니다.
Winfield Trail

4
모두 훌륭하고 훌륭하지만 여전히 질문과 다른 질문에 대답하기로 선택했습니다. 그리고 지울 수있는 잉크가 실제로 산업 규모로 생산되는 실행 가능한 제품이라는 점을 감안할 때 ...
Winfield Trail

2
FWIW, 나는 귀하의 답변에 공감하며 개인적으로 유지해야 할 웹 앱에서보고 싶습니다. 나는 단지 내가 떠나지 않은 반대표를 설명하고있다. ;)
Winfield Trail

왜 사용하지 않을 수 있습니다 @ rybo111 이유 button를 사용할 때 IE는 당신 3D "를 눌러"효과를 강제로 : button사용하여 쉽게 피할 수있다, a. 을 display: inline-table사용 하여 단추 스타일을 지정하는 경우 a의 일반적인 해결 방법이 position: relative작동하지 않으므로이 효과를 피할 수있는 유일한 방법은를 사용하는 것입니다.
Paya

제출할 때 버튼을 사용하지 않는 것은 피할 수있는 변명입니다.
vintproykt

42

이를 위해 자바 스크립트를 사용해야합니다.

<form id="form1" action="showMessage.jsp" method="post">
    <a href="javascript:;" onclick="document.getElementById('form1').submit();"><%=n%></a>
    <input type="hidden" name="mess" value=<%=n%>/>
</form>

40

객체 submit에 자바 스크립트 기능 을 사용해야 form합니다. 다른 기능을 살펴보십시오 .

<form action="showMessage.jsp" method="post">
    <a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
    <input type="hidden" name="mess" value=<%=n%>/>
</form>

7
양식 요소가 항상 앵커 태그의 parentNode 일 필요는 없습니다.
2015 년

5

MVC를 사용하여 수행하는 경우 다음과 같이해야합니다.

 <form action="/ControllerName/ActionName" method="post">
        <a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
        <input type="hidden" name="mess" value=<%=n%>/>
    </form>

나는 단지 여기에 몇 가지 예를 살펴 보았고 그것을 게시하는 것이 아프지 않을 것이라고 생각한 MVC를 보지 못했습니다.

그런 다음 컨트롤러의 액션에서 <HTTPPost>맨 위에 놓을 것입니다. 나는 당신이 <HTTPGET>그 위에 있지 않으면 여전히 작동하지만 명시 적으로 거기에 두는 것이 조금 더 안전하다고 생각합니다.


1

실제로 <a href= ..POST 메서드로 속일 방법이없는 것 같습니다 . 그러나 페이지의 CSS에 대한 액세스 권한이있는 경우 대신 양식을 사용하여 대체 할 수 있습니다.

안타깝게도 CSS에서 버튼을 앵커 태그로 스타일링하는 명백한 방법은 브라우저 간 호환이되지 않습니다 <button value= .... 다른 브라우저는 다르게 취급하기 때문입니다.

Incorrect:

<form action='actbusy.php' method='post'>
  <button type='submit' name='parameter' value='One'>Two</button>
</form>

위의 예는 FireFox에서 'Two'를 표시하고 'parameter : One'을 전송하는 반면, IE8에서는 'One'을 표시하고 'parameter : One'도 전송합니다.

방법은 데이터를 전달하기 위해 숨겨진 입력 필드를 사용하고 제출하기 위해 버튼을 사용하는 것입니다.

<form action='actbusy.php' method='post'>
   <input class=hidden name='parameter' value='blaah'>
   <button type='submit' name='delete' value='Delete'>Delete</button>
</form>

이 메서드는 'parameter : blaah'외에도 POST에서 잉여 매개 변수로 'delete : Delete'를 전달하는 부작용이 있습니다.

(위에서 언급했듯이) 일부 브라우저는 하나를 표시하고 일부는 버튼 레이블로 표시하기 때문에 버튼에 대해 값 속성과 태그 사이의 버튼 레이블을 동일하게 유지하려고합니다 (이 경우 '삭제').


IE8이 그렇게한다고 확신합니까? <button value="Bad">Good</button>IE7에서 시도한 결과 "Good"이 표시됩니다.
rybo111 2014
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.