Нужно ли отправлять почтовые данные в php-скрипт, кроме формы? (Конечно, не использовать GET).
Я хочу, чтобы javascript перезагружал страницу через X секунд и отправлял некоторые данные на страницу одновременно. Я мог бы сделать это с помощью GET, но я предпочел бы использовать POST, поскольку он выглядит более чистым.
Большое спасибо.
EDIT: Можно ли сделать это с заголовком PHP? Я уверен, что лучше использовать JQuery, но для моей текущей ситуации я мог бы реализовать это намного проще и быстрее:)
ура
Я закончил так:
<script> function mySubmit() { var form = document.forms.myForm; form.submit(); } </script> ... <body onLoad="mySubmit()";> <form action="script.php?GET_Value=<?php echo $GET_var ?>" name="myForm" method="post"> <input type="hidden" name="POST_Value" value="<?php echo $POST_Var ?>"> </form> </body>
Кажется, все отлично работает для меня, но, пожалуйста, скажите, что с этим что-то не так!
Всем спасибо.
Как было указано выше, вот как вы могли бы динамически добавлять скрытую форму и отправлять ее, когда хотите обновить страницу.
Где-то в вашем HTML:
<div id="hidden_form_container" style="display:none;"></div>
И некоторые Javascript:
function postRefreshPage () { var theForm, newInput1, newInput2; // Start by creating a <form> theForm = document.createElement('form'); theForm.action = 'somepage.php'; theForm.method = 'post'; // Next create the <input>s in the form and give them names and values newInput1 = document.createElement('input'); newInput1.type = 'hidden'; newInput1.name = 'input_1'; newInput1.value = 'value 1'; newInput2 = document.createElement('input'); newInput2.type = 'hidden'; newInput2.name = 'input_2'; newInput2.value = 'value 2'; // Now put everything together... theForm.appendChild(newInput1); theForm.appendChild(newInput2); // ...and it to the DOM... document.getElementById('hidden_form_container').appendChild(theForm); // ...and submit it theForm.submit(); }
Это эквивалентно отправке этой HTML-формы:
<form action="somepage.php" method="post"> <input type="hidden" name="input_1" value="value 1" /> <input type="hidden" name="input_2" value="value 2" /> </form>
Вы можете использовать JQuery для публикации на php-страницу: http://api.jquery.com/jQuery.post/
Как насчет этого:
function redirectWithPostData(strLocation, objData, strTarget) { var objForm = document.createElement('FORM'); objForm.method = 'post'; objForm.action = strLocation; if (strTarget) objForm.target = strTarget; var strKey; for (strKey in objData) { var objInput = document.createElement('INPUT'); objInput.type = 'hidden'; objInput.name = strKey; objInput.value = objData[strKey]; objForm.appendChild(objInput); } document.body.appendChild(objForm); objForm.submit(); if (strTarget) document.body.removeChild(objForm); }
используйте следующее:
redirectWithPostData('page.aspx', {UserIDs: getMultiUserSelectedItems()},'_top');
По jQuery:
$.ajax({ url: "yourphpscript.php", type: "post", data: json/array/whatever, success: function(){ // trigger when request was successfull window.location.href = 'somewhere' }, error: anyFunction // when error happened complete: otherFunction // when request is completed -no matter if the error or not // callbacks are of course not mandatory })
или простейшим:
$.post( "yourphpscript.php", data, success_callback_as_above );
больше на http://api.jquery.com/jQuery.ajax
Вы можете отправить запрос xhr с данными, которые вы хотите опубликовать, до перезагрузки страницы.
И перезагрузите страницу, только если запрос xhr завершен.
Поэтому в основном вы хотели бы выполнить синхронный запрос.
Создайте свой собственный заголовок, как таковой:
POST /submit.php HTTP/1.1 Host: localhost User-Agent: Mozilla/4.0 Content-Length: 27 Content-Type: application/x-www-form-urlencoded userId=admin&password=letmein
Используйте API FormData .
Из примера:
var formData = new FormData(); formData.append("username", "Groucho"); formData.append("accountnum", 123456); var request = new XMLHttpRequest(); request.open("POST", "http://foo.com/submitform.php"); request.send(formData);