페이지를 다시로드하지 않고 양식 제출
PHP페이지를 다시로드하지 않고 양식 제출
광고 웹 사이트가 있고 광고가 게재 된 페이지에서 '친구에게 팁 보내기'양식을 작성 중입니다 ...
따라서 원하는 사람은 누구나 이메일 주소로 친구의 팁을 보낼 수 있습니다.
양식을 PHP 페이지에 제출해야합니다 맞춰요?
<form name='tip' method='post' action='tip.php'>
Tip somebody: <input name="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/>
<input type="submit" value="Skicka Tips"/>
<input type="hidden" name="ad_id" />
</form>
양식을 제출할 때 페이지가 다시로드됩니다. 나는 그걸 원치 않습니다 ...
다시로드하지 않고 메일을 보내는 방법이 있습니까? preferrably 아약스 또는 jquery없이 ...
감사
해결법
-
==============================
1.페이지를 다시로드하지 않고 이메일을 보내려면 ajax 요청을 제출해야합니다. http://api.jquery.com/jQuery.ajax/에서 살펴보십시오.
페이지를 다시로드하지 않고 이메일을 보내려면 ajax 요청을 제출해야합니다. http://api.jquery.com/jQuery.ajax/에서 살펴보십시오.
귀하의 코드는 다음 사항을 따라야합니다.
$('#submit').click(function() { $.ajax({ url: 'send_email.php', type: 'POST', data: { email: 'email@example.com', message: 'hello world!' }, success: function(msg) { alert('Email Sent'); } }); });
양식은 백그라운드에서 send_email.php 페이지로 제출되며,이 페이지는 요청을 처리하고 이메일을 보내야합니다.
-
==============================
2.나는 더 쉬운 방법이라고 생각하는 것을 발견했습니다. 페이지에 Iframe을 삽입하면 해당 액션의 이탈을 리디렉션하여 표시 할 수 있습니다. 물론 아무것도 할 수 없습니다. 이 경우 iframe 표시를 none으로 설정할 수 있습니다.
나는 더 쉬운 방법이라고 생각하는 것을 발견했습니다. 페이지에 Iframe을 삽입하면 해당 액션의 이탈을 리디렉션하여 표시 할 수 있습니다. 물론 아무것도 할 수 없습니다. 이 경우 iframe 표시를 none으로 설정할 수 있습니다.
<iframe name="votar" style="display:none;"></iframe> <form action="tip.php" method="post" target="votar"> <input type="submit" value="Skicka Tips"> <input type="hidden" name="ad_id" value="2"> </form>
-
==============================
3.당신은 AJAX를 사용하거나
당신은 AJAX를 사용하거나
-
==============================
4.가장 빠르고 쉬운 방법은 iframe을 사용하는 것입니다. 페이지 하단에 프레임을 넣으십시오.
가장 빠르고 쉬운 방법은 iframe을 사용하는 것입니다. 페이지 하단에 프레임을 넣으십시오.
그리고 당신의 형태로 이것을하십시오.
<form target="frame"> </form>
그리고 당신의 CSS에서 프레임을 보이지 않게하십시오.
iframe{ display: none; }
-
==============================
5.이것은 jQuery와 AJAX 없이도 작동하는 방법이며, 간단한 iFrame을 사용하면 잘 작동합니다. I Love IT, Opera10, FF3 및 IE6에서 작동합니다. 위의 포스터 중 일부가 올바른 방향을 가리키고 있기 때문에 이것이 내가 여기 게시하는 유일한 이유입니다.
이것은 jQuery와 AJAX 없이도 작동하는 방법이며, 간단한 iFrame을 사용하면 잘 작동합니다. I Love IT, Opera10, FF3 및 IE6에서 작동합니다. 위의 포스터 중 일부가 올바른 방향을 가리키고 있기 때문에 이것이 내가 여기 게시하는 유일한 이유입니다.
<select name="aAddToPage[65654]" onchange=" if (bCanAddMore) { addToPage(65654,this); } else { alert('Could not add another, wait until previous is added.'); this.options[0].selected = true; }; " /> <option value="">Add to page..</option> [more options with values here]</select> <script type="text/javascript"> function addToPage(iProduct, oSelect){ iPage = oSelect.options[oSelect.selectedIndex].value; if (iPage != "") { bCanAddMore = false; window.hiddenFrame.document.formFrame.iProduct.value = iProduct; window.hiddenFrame.document.formFrame.iAddToPage.value = iPage; window.hiddenFrame.document.formFrame.submit(); } } var bCanAddMore = true;</script> <iframe name="hiddenFrame" style="display:none;" src="frame.php?p=addProductToPage" onload="bCanAddMore = true;"></iframe>
위에서 호출 된 페이지를 생성하는 PHP 코드 :
if( $_GET['p'] == 'addProductToPage' ){ // hidden form processing if(!empty($_POST['iAddToPage'])) { //.. do something with it.. } print(' <html> <body> <form name="formFrame" id="formFrameId" style="display:none;" method="POST" action="frame.php?p=addProductToPage" > <input type="hidden" name="iProduct" value="" /> <input type="hidden" name="iAddToPage" value="" /> </form> </body> </html> '); }
-
==============================
6.양식의 대상 속성을 숨겨진 iframe으로 설정하여 양식이 포함 된 페이지가 다시로드되지 않도록 할 수 있습니다.
양식의 대상 속성을 숨겨진 iframe으로 설정하여 양식이 포함 된 페이지가 다시로드되지 않도록 할 수 있습니다.
나는 파일 업로드 (AJAX를 통해 할 수 없다는 것을 알고있다.)와 함께 시도해 보았고 아름답게 작동했다.
-
==============================
7.이 경우 jquery-ajax의 도움을 받아야합니다. 아약스 없이는 현재 해결책이 없습니다.
이 경우 jquery-ajax의 도움을 받아야합니다. 아약스 없이는 현재 해결책이 없습니다.
먼저 양식을 제출할 때 JavaScript 함수를 호출하십시오. 그냥 onsubmit = "func ()"로 설정하십시오. 함수가 호출 되더라도 제출의 기본 동작이 수행됩니다. 수행되면 페이지를 새로 고치거나 리디렉션하지 못하도록 막을 수 없습니다. 따라서 다음 작업은 기본 동작을 방지하는 것입니다. func ()의 시작 부분에 다음 줄을 삽입하십시오.
event.preventDefault()
이제 리디렉션이나 새로 고침이 없습니다. 따라서 func ()에서 ajax 호출을 만들고 호출이 끝나면 원하는대로 수행하십시오.
예:
형태:
<form id="form-id" onsubmit="func()"> <input id="input-id" type="text"> </form>
자바 스크립트 :
function func(){ event.preventDefault(); var newValue = $('#input-field-id').val(); $.ajax({ type: 'POST', url: '...', data: {...}, datatype: 'JSON', success: function(data){...}, error: function(){...}, }); }
-
==============================
8.iFrame을 사용해 보셨습니까? 아니 아약스, 그리고 원래 페이지가로드되지 않습니다.
iFrame을 사용해 보셨습니까? 아니 아약스, 그리고 원래 페이지가로드되지 않습니다.
제출 양식을 iframe 내부의 별도 페이지로 표시 할 수 있으며 제출되면 외부 / 컨테이너 페이지가 다시로드되지 않습니다. 이 솔루션은 어떤 종류의 아약스도 사용하지 않습니다.
-
==============================
9.이것은 귀하의 problem.In이 코드에서 버튼을 클릭 제출 후 jquery 아약스를 호출하고 우리는 posttype POST / GET에 URL을 전달합니다 데이터 : 데이터 정보 입력 필드 또는 기타를 선택할 수 있습니다. 성공 : 서버에서 모든 것이 정상이면 콜백 함수 매개 변수 텍스트, html 또는 json, 서버의 응답 성공한 데이터가 어떤 종류의 상태에 있다면 경고 쓰기를 작성할 수 있습니다. 또는 다음에 수행 할 작업을 코드를 실행하십시오.
이것은 귀하의 problem.In이 코드에서 버튼을 클릭 제출 후 jquery 아약스를 호출하고 우리는 posttype POST / GET에 URL을 전달합니다 데이터 : 데이터 정보 입력 필드 또는 기타를 선택할 수 있습니다. 성공 : 서버에서 모든 것이 정상이면 콜백 함수 매개 변수 텍스트, html 또는 json, 서버의 응답 성공한 데이터가 어떤 종류의 상태에 있다면 경고 쓰기를 작성할 수 있습니다. 또는 다음에 수행 할 작업을 코드를 실행하십시오.
<form id='tip'> Tip somebody: <input name="tip_email" id="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/> <input type="submit" id="submit" value="Skicka Tips"/> <input type="hidden" id="ad_id" name="ad_id" /> </form> <script> $( "#tip" ).submit(function( e ) { e.preventDefault(); $.ajax({ url: tip.php, type:'POST', data: { tip_email: $('#tip_email').val(), ad_id: $('#ad_id').val() }, success: function(msg) { alert('Email Sent'); } }); }); </script>
-
==============================
10.다음은이 문제를 해결하는 인터넷에서 발견 된 코드 중 일부입니다.
다음은이 문제를 해결하는 인터넷에서 발견 된 코드 중 일부입니다.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/core.js"> </script> <script type="text/javascript"> function clickButton(){ var name=document.getElementById('name').value; var descr=document.getElementById('descr').value; $.ajax({ type:"post", url:"server_action.php", data: { 'name' :name, 'descr' :descr }, cache:false, success: function (html) { alert('Data Send'); $('#msg').html(html); } }); return false; } </script> <form > <input type="" name="name" id="name"> <input type="" name="descr" id="descr"> <input type="submit" name="" value="submit" onclick="return clickButton();"> </form> <p id="msg"></p>
<?php $name = $_POST['name']; $descr = $_POST['descr']; echo $name; echo $descr; ?>
태그 : phpajaxjqueryserverside
-
==============================
11.위의 jquery와 비슷한 작업을했지만 양식 데이터와 그래픽 첨부 캔버스를 재설정해야했습니다. 그래서 여기에 내가 생각해 낸 것이 있습니다 :
위의 jquery와 비슷한 작업을했지만 양식 데이터와 그래픽 첨부 캔버스를 재설정해야했습니다. 그래서 여기에 내가 생각해 낸 것이 있습니다 :
<script> $(document).ready(function(){ $("#text_only_radio_button_id").click(function(){ $("#single_pic_div").hide(); $("#multi_pic_div").hide(); }); $("#pic_radio_button_id").click(function(){ $("#single_pic_div").show(); $("#multi_pic_div").hide(); }); $("#gallery_radio_button_id").click(function(){ $("#single_pic_div").hide(); $("#multi_pic_div").show(); }); $("#my_Submit_button_ID").click(function() { $("#single_pic_div").hide(); $("#multi_pic_div").hide(); var url = "script_the_form_gets_posted_to.php"; $.ajax({ type: "POST", url: url, data: $("#html_form_id").serialize(), success: function(){ document.getElementById("html_form_id").reset(); var canvas=document.getElementById("canvas"); var canvasA=document.getElementById("canvasA"); var canvasB=document.getElementById("canvasB"); var canvasC=document.getElementById("canvasC"); var canvasD=document.getElementById("canvasD"); var ctx=canvas.getContext("2d"); var ctxA=canvasA.getContext("2d"); var ctxB=canvasB.getContext("2d"); var ctxC=canvasC.getContext("2d"); var ctxD=canvasD.getContext("2d"); ctx.clearRect(0, 0,480,480); ctxA.clearRect(0, 0,480,480); ctxB.clearRect(0, 0,480,480); ctxC.clearRect(0, 0,480,480); ctxD.clearRect(0, 0,480,480); } }); return false; }); }); </script>
그게 잘 작동, 그냥 HTML 폼의 응용 프로그램에 대해, 우리는이 jquery 코드를 단순화 할 수 있습니다 :
<script> $(document).ready(function(){ $("#my_Submit_button_ID").click(function() { var url = "script_the_form_gets_posted_to.php"; $.ajax({ type: "POST", url: url, data: $("#html_form_id").serialize(), success: function(){ document.getElementById("html_form_id").reset(); } }); return false; }); }); </script>
-
==============================
12.iframe (추악한 접근법)을 초래하지 않고 JavaScript를 사용해야합니다.
iframe (추악한 접근법)을 초래하지 않고 JavaScript를 사용해야합니다.
JavaScript로 할 수 있습니다. jQuery를 사용하면 힘들이지 않습니다.
나는 당신이 AJAX와 Posting을 체크 아웃 할 것을 제안한다.
-
==============================
13.양식이있는 동일한 페이지에 제출하는 경우 작업과 함께 양식 태그를 작성할 수 있으며 제출하면됩니다
양식이있는 동일한 페이지에 제출하는 경우 작업과 함께 양식 태그를 작성할 수 있으며 제출하면됩니다
<form method='post'> <!-- you can see there is no action here-->
-
==============================
14.자바 스크립트를 사용하지 않으려면 페이지가 다시로드됩니다.
자바 스크립트를 사용하지 않으려면 페이지가 다시로드됩니다.
-
==============================
15.
function Foo(){ event.preventDefault(); $.ajax( { url:"<?php echo base_url();?>Controllername/ctlr_function", type:"POST", data:'email='+$("#email").val(), success:function(msg) { alert('You are subscribed'); } } ); }
좋은 해결책을 찾기 위해 여러 번 시도해 보았고 @taufique의 대답을 통해이 답변에 도달 할 수있었습니다.
주의 : event.preventDefault (); 함수 본문의 시작 부분에.
-
==============================
16.다음은 PHP 페이지에 게시하고 HTML을 다시 가져 오기위한 jQuery입니다.
다음은 PHP 페이지에 게시하고 HTML을 다시 가져 오기위한 jQuery입니다.
$('form').submit(function() { $.post('tip.php', function(html) { // do what you need in your success callback } return false; });
from https://stackoverflow.com/questions/2866063/submit-form-without-page-reloading by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
CodeIgniter는 URL에서 index.php를 제거합니다. (0) | 2018.09.05 |
---|---|
.htaccess로 하위 도메인을 즉석에서 만듭니다 (PHP). (0) | 2018.09.05 |
큰 파일을 한 줄씩 읽는 방법 (0) | 2018.09.05 |
PHP로 비동기 HTTP 요청을하는 법 (0) | 2018.09.05 |
print_r ()의 출력에서 변수를 볼 수 있지만 코드에서 액세스하는 방법을 모릅니다. (0) | 2018.09.05 |