Send POST data to PHP without using an HTML form?

前端 未结 7 1996
眼角桃花
眼角桃花 2020-12-08 11:54

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

相关标签:
7条回答
  • 2020-12-08 12:07

    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

    0 讨论(0)
  • 2020-12-08 12:09

    How about this:

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

    use like this:

    redirectWithPostData('page.aspx', {UserIDs: getMultiUserSelectedItems()},'_top');
    
    0 讨论(0)
  • 2020-12-08 12:14

    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);
    
    0 讨论(0)
  • 2020-12-08 12:17

    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>
    
    0 讨论(0)
  • 2020-12-08 12:18

    Form your own header, as such:

    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
    
    0 讨论(0)
  • 2020-12-08 12:28

    You can send an xhr request with the data you want to post before reloading the page.

    And reload the page only if the xhr request is finished.

    So basically you would want to do a synchronous request.

    0 讨论(0)
提交回复
热议问题