POST请求(Javascript)

POST请求(Javascript),javascript,html,post,Javascript,Html,Post,如何在Javascript中发出一个简单的POST请求而不使用表单和发回?您可以使用AJAX调用(XMLHttpRequest对象)来实现这一点 虽然我从@sundeep-answer获取了代码示例,但为了完整起见,我将代码发布在这里 var url = "sample-url.php"; var params = "lorem=ipsum&name=alpha"; var xhr = new XMLHttpRequest(); xhr.open("POST", url, true);

如何在Javascript中发出一个简单的POST请求而不使用表单和发回?

您可以使用AJAX调用(XMLHttpRequest对象)来实现这一点


虽然我从@sundeep-answer获取了代码示例,但为了完整起见,我将代码发布在这里

var url = "sample-url.php";
var params = "lorem=ipsum&name=alpha";
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);

//Send the proper header information along with the request
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xhr.send(params);

我制作了一个函数,它发送请求时不刷新页面,不打开页面,也不使用AJAX。该过程对用户不可见。我使用假iframe发送请求:

/**
* Make a request without ajax and without refresh the page
* Invisible for the user
* @param url string
* @param params object
* @param method string get or post
**/
function requestWithoutAjax( url, params, method ){

    params = params || {};
    method = method || "post";

    // function to remove the iframe
    var removeIframe = function( iframe ){
        iframe.parentElement.removeChild(iframe);
    };

    // make a iframe...
    var iframe = document.createElement('iframe');
    iframe.style.display = 'none';

    iframe.onload = function(){
        var iframeDoc = this.contentWindow.document;

        // Make a invisible form
        var form = iframeDoc.createElement('form');
        form.method = method;
        form.action = url;
        iframeDoc.body.appendChild(form);

        // pass the parameters
        for( var name in params ){
            var input = iframeDoc.createElement('input');
            input.type = 'hidden';
            input.name = name;
            input.value = params[name];
            form.appendChild(input);
        }

        form.submit();
        // remove the iframe
        setTimeout( function(){ 
            removeIframe(iframe);
        }, 500);
    };

    document.body.appendChild(iframe);
}
现在您可以这样做:

requestWithoutAjax('url/to', { id: 2, price: 2.5, lastname: 'Gamez'});

看看是怎么回事!:

也许最好给出更多细节?这太模糊了,你可以通过google querypossible duplicate开始,你可以做一个用户看不见的请求,而无需AJAX、弹出窗口或刷新页面。当然,您不能检索响应,但是对于没有AJAX的RESTfulAPI来说,它是有用的。在我的回答中,我提出了一个post请求,没有
AJAX
,也没有打开页面,弹出或刷新页面:)。编辑:似乎有人想出了如何制作一个不会引起潜在XSS攻击标志的工作版本。这么简单,我喜欢它:D