Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Send POST data to PHP without using an HTML form?

Is there anyway to send post data to a php script other than having a form? (Not using GET of course).

I want javascript to reload the page after X seconds and post some data to the page at the same time. I could do it with GET but I would rather use POST, as it looks cleaner.

Thanks a lot.

EDIT: Would it be possible to do with PHP header? I'm sure it is better to use JQuery but for my current situation I could implement that a lot easier/faster : )

Cheers

I ended up doing it like so:

<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>

Seems to work fine for me, but please say if there is anything wrong with it!

Thanks everyone.

like image 684
bag-man Avatar asked Dec 26 '11 20:12

bag-man


People also ask

Can I use Submit button without form?

Submit buttons don't submit if they are not in a form. Not sure why you think form's can't be in a table? (As you already wrote in the title:) The button has no form associated to .... - So asking the question contains the answer: Add the form which is yet missing.

Can an HTML form be submitted using GET instead of POST?

Forms in HTML can use either method by specifying method="POST" or method="GET" (default) in the <form> element. The method specified determines how form data is submitted to the server. When the method is GET, all form data is encoded into the URL, appended to the action URL as query string parameters.

How can insert data without submit button in PHP?

?> Explanation: Here, we need to add the data filled in the form to the database without using submit button. For this, we need to trigger submit() function using HTML element. Using the getElementById() method, we have targeted the required form to be submitted.


4 Answers

As requested above, here is how you could dynamically add a hidden form and submit it when you want to refresh the page.

Somewhere in your HTML:

<div id="hidden_form_container" style="display:none;"></div>

And some 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();
}

This is equivalent to submitting this HTML form:

<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>
like image 168
DaveRandom Avatar answered Nov 08 '22 14:11

DaveRandom


You can use JQuery to post to a php page: http://api.jquery.com/jQuery.post/

like image 27
box86rowh Avatar answered Nov 08 '22 16:11

box86rowh


By 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
})

or simplest:

$.post( "yourphpscript.php", data, success_callback_as_above );

more on http://api.jquery.com/jQuery.ajax

like image 20
abuduba Avatar answered Nov 08 '22 14:11

abuduba


Use the FormData API.

From the example there:

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);
like image 4
nafg Avatar answered Nov 08 '22 14:11

nafg