2009-12-25 69 views

Trả lời

47

Bạn không thể nhận được giá trị của các biến POST sử dụng Javascript, mặc dù bạn có thể chèn nó vào tài liệu khi bạn xử lý yêu cầu trên máy chủ.

<script type="text/javascript"> 
    window.some_variable = '<?=$_POST['some_value']?>'; // That's for a string 
</script> 

biến GET có sẵn thông qua các window.location.href, và một số khuôn khổ thậm chí có methods sẵn sàng để phân tích chúng.

+10

Thay vì viết giá trị POST trực tiếp, bạn có thể sử dụng 'json_encode' –

+0

@Ken Keenan: bạn cảm ơn! Và bạn cũng có thể làm một số xác nhận trước đó. Tôi chỉ cố gắng thể hiện quan điểm của mình. –

+3

Không thực hiện bất kỳ loại mã hóa hoặc xác nhận nào có nghĩa là mã được viết là [dễ bị tổn thương đối với XSS] (https://www.owasp.org/index.php/XSS). – Quentin

16

Bạn chỉ có thể lấy đối số URI bằng JavaScript.

// get query arguments 
var $_GET = {}, 
    args = location.search.substr(1).split(/&/); 
for (var i=0; i<args.length; ++i) { 
    var tmp = args[i].split(/=/); 
    if (tmp[0] != "") { 
     $_GET[decodeURIComponent(tmp[0])] = decodeURIComponent(tmp.slice(1).join("").replace("+", " ")); 
    } 
} 
-1

Khi tôi đã có vấn đề tôi đã lưu các giá trị vào một đầu vào ẩn:

trong nội dung html:

<body> 
    <?php 
    if (isset($_POST['Id'])){ 
     $fid= $_POST['Id']; 
    } 
    ?> 

... sau đó đưa đầu vào ẩn trên trang và viết giá trị $ fid với php echo

<input type=hidden id ="fid" name=fid value="<?php echo $fid ?>"> 

sau đó trong $ (tài liệu) .ready (function() {

var postId=document.getElementById("fid").value; 

vì vậy tôi đã nhận thông số url ẩn trong php js.

+0

Điều này không an toàn. Nó cho phép bất cứ ai chèn HTML tùy ý vào ứng dụng của bạn (họ có thể đăng ''' và thoát khỏi thuộc tính) –

0

Với ít php rất dễ dàng.

HTML phần:

<input type="text" name="some_name">

Javascript

<script type="text/javascript"> 
    some_variable = "<?php echo $_POST['some_name']?>"; 
</script> 
+0

Điều này là hoàn toàn không an toàn. Nếu ai đó viết một cái gì đó chứa '" thì họ có thể theo dõi nó với JavaScript tùy ý. –

+0

Cũng lưu ý rằng thoát '' 'là không đủ, bạn cần phải bảo vệ chống lại' 'quá. Sử dụng' json_encode' (mà bây giờ thoát dấu gạch chéo ngược) được đề nghị –

0
// Captura datos usando metodo GET en la url colocar index.html?hola=chao 
const $_GET = {}; 
const args = location.search.substr(1).split(/&/); 
for (let i=0; i<args.length; ++i) { 
    const tmp = args[i].split(/=/); 
    if (tmp[0] != "") { 
     $_GET[decodeURIComponent(tmp[0])] = decodeURIComponent(tmp.slice(1).join("").replace("+", " ")); 
     console.log(`>>${$_GET['hola']}`); 
    }//::END if 
}//::END for 
+0

Điều này có thể cần một số giải thích hữu ích .. –

0

/** 
 
* getGET: [Funcion que captura las variables pasados por GET] 
 
* @Implementacion [pagina.html?id=10&pos=3] 
 
* @param {[const ]} loc   [capturamos la url] 
 
* @return {[array]} get [Devuelve un array de clave=>valor] 
 
*/ 
 
const getGET =() => { 
 
    const loc = document.location.href; 
 

 
      // si existe el interrogante 
 
      if(loc.indexOf('?')>0){ 
 
      // cogemos la parte de la url que hay despues del interrogante 
 
      const getString = loc.split('?')[1]; 
 
      // obtenemos un array con cada clave=valor 
 
      const GET = getString.split('&'); 
 
      const get = {}; 
 

 
      // recorremos todo el array de valores 
 
      for(let i = 0, l = GET.length; i < l; i++){ 
 
       const tmp = GET[i].split('='); 
 
       get[tmp[0]] = unescape(decodeURI(tmp[1])); 
 
      }//::END for 
 
      return get; 
 
     }//::END if 
 
}//::END getGET 
 

 
/** 
 
* [DOMContentLoaded] 
 
* @param {[const]} valores [Cogemos los valores pasados por get] 
 
* @return {[document.write]}  
 
*/ 
 
document.addEventListener('DOMContentLoaded',() => { 
 
    const valores=getGET(); 
 

 
    if(valores){ 
 
      // hacemos un bucle para pasar por cada indice del array de valores 
 
      for(const index in valores){ 
 
       document.write(`<br>clave: ${index} - valor: ${valores[index]}`); 
 
      }//::END for 
 
     }else{ 
 
      // no se ha recibido ningun parametro por GET 
 
      document.write("<br>No se ha recibido ningún parámetro"); 
 
     }//::END if 
 
});//::END DOMContentLoaded

-1

Đây là answ của tôi er cho chuỗi returnURL đã cho, giống như http://host.com/?param1=abc&param2=cde. Nó khá cơ bản khi tôi bắt đầu với JavaScript (đây thực sự là một phần của chương trình đầu tiên của tôi trong JS), và làm cho nó dễ hiểu hơn là khó khăn.

Ghi chú

  • Không tỉnh táo kiểm tra các giá trị
  • Chỉ cần xuất ra đến console - bạn sẽ muốn lưu trữ chúng trong một mảng hoặc một cái gì đó
  • này chỉ dành cho GET, POST và không

    var paramindex = returnURL.indexOf('?'); 
    if (paramindex > 0) { 
        var paramstring = returnURL.split('?')[1]; 
        while (paramindex > 0) { 
         paramindex = paramstring.indexOf('='); 
         if (paramindex > 0) { 
          var parkey = paramstring.substr(0,paramindex); 
          console.log(parkey) 
          paramstring = paramstring.substr(paramindex+1) // +1 to strip out the = 
         } 
         paramindex = paramstring.indexOf('&'); 
         if (paramindex > 0) { 
          var parvalue = paramstring.substr(0,paramindex); 
          console.log(parvalue) 
          paramstring = paramstring.substr(paramindex+1) // +1 to strip out the & 
         } else { // we're at the end of the URL 
          var parvalue = paramstring 
          console.log(parvalue) 
          break; 
         } 
        } 
    } 
    
Các vấn đề liên quan