2009-03-28 58 views
15

Làm thế nào để bạn thực hiện một yêu cầu POST đơn giản trong Javascript mà không cần sử dụng biểu mẫu và không đăng lại?Yêu cầu POST (Javascript)

+0

có lẽ tốt nhất nên cung cấp thêm chi tiết? – spender

+1

đây là bản sao – bendewey

+0

điều này quá mơ hồ và bạn có thể bắt đầu qua truy vấn google –

Trả lời

3

Bạn có thể làm điều này bằng AJAX gọi (đối tượng XMLHttpRequest)

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

+0

Tôi nghĩ rằng nếu anh ta muốn sử dụng AJAX anh ta đã sử dụng. Trong câu trả lời của tôi, tôi đã thực hiện yêu cầu đăng ** mà không có 'AJAX' ** và không mở trang, bật lên hoặc làm mới trang :). –

13

Mặc dù tôi đang lấy mẫu mã từ câu trả lời @sundeep, nhưng việc đăng mã ở đây cho đầy đủ

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); 
+0

Vì vậy, đơn giản, tôi thích nó: D –

5

Tôi đã thực hiện một chức năng gửi yêu cầu mà không cần làm mới trang, mà không cần mở trang và mà không có AJAX. Việc xử lý là vô hình cho người dùng. Tôi sử dụng một iframe giả để gửi yêu cầu:

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

Bây giờ bạn có thể làm điều đó:

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

Xem cách thức hoạt động !: http://jsfiddle.net/b87pzbye/10/.

+0

EDIT: có vẻ như ai đó đã tìm ra cách để làm cho một phiên bản làm việc mà không nâng cao một lá cờ tấn công XSS tiềm năng. http://jsfiddle.net/b87pzbye/37/ –

Các vấn đề liên quan