如何在不使用表单且不回发的情况下在Javascript中创建简单的POST请求?
虽然我从@sundeep回答中获取代码示例,但是为了完整性而在此处发布代码
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.进程对用户是不可见的.我使用false 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'});
看看它是如何运作的!:http://jsfiddle.net/b87pzbye/10/.