web-dev-qa-db-fra.com

POST Request (Javascript)

Comment faire une simple demande POST en Javascript sans utiliser de formulaires et sans poster?)

19
LB.

Bien que je prenne l'exemple de code de la réponse @sundeep, mais que je poste le code ici pour être complet

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);
17
Pankaj

J'ai créé une fonction qui envoie une requête sans rafraîchir la page , sans ouvrir une page et sans AJAX . Le processus est invisible pour l'utilisateur. J'utilise un faux iframe pour envoyer une demande:

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

Maintenant, vous pouvez le faire:

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

Voyez comment ça marche!: http://jsfiddle.net/b87pzbye/10/ .

5
SnakeDrak

Vous pouvez le faire en utilisant AJAX (objet XMLHttpRequest)

http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

3
sundeep