2009-09-11 18 views
52

Estoy tratando de leer los parámetros de solicitud de publicación de mi html. Puedo leer los parámetros de solicitud de obtención usando el siguiente código en javascript.Cómo leer los parámetros de solicitud de publicación utilizando javascript

$wnd.location.search 

Pero no funciona para la post request.Can alguien decirme cómo leer los valores de los parámetros de solicitud de entradas en mi HTML usando Javascript.

Respuesta

108

datos POST son datos que se manejan del lado del servidor. Y Javascript está en el lado del cliente. Por lo tanto, no hay manera de que pueda leer una publicación de datos usando JavaScript.

+30

Aunque la conclusión es correcta (no se puede obtener esa información de javascript) el razonamiento es incorrecto. El cliente (el navegador) es el que envía los datos POST al servidor en primer lugar. Entonces el cliente sabe muy bien qué son esos datos. La razón real es simplemente que el navegador no pone esos datos a disposición de javascript (pero podría perfectamente). – GetFree

+0

@GetFree: ¿De qué sirve este conocimiento de las variables POST para un desarrollador web? Ningún desarrollador web escribirá un script del lado del cliente predicado en el navegador, posiblemente haciendo que los datos de la publicación estén disponibles para JavaScript, ya que, como usted señala, * nunca sucede en la práctica *. Por lo tanto, en el * mundo real *, la respuesta que se presenta aquí es correcta, así como también la mía. –

+26

@PlatinumAzure, no estoy seguro de que entiendas el punto. Usted dice que los datos POST existen en el servidor, y dado que javascript se ejecuta en el cliente, no hay forma de que JS pueda acceder a esos datos. Eso está mal, los datos POST existen tanto en el cliente como en el servidor y la razón por la que JS no puede acceder a esos datos es simplemente porque el cliente (el navegador) no la pone a disposición de JS. Tan sencillo como eso. – GetFree

5

JavaScript es un lenguaje de scripting del lado del cliente, lo que significa que todo el código se ejecuta en la máquina del usuario de la web. Las variables POST, por otro lado, van al servidor y residen allí. Los navegadores no proporcionan esas variables al entorno JavaScript, ni ningún desarrollador debe esperar que estén mágicamente allí.

Por lo tanto, es prácticamente imposible leer las variables POST. Las variables GET son un golpe de suerte, porque están en la URL y eso es algo que la máquina del cliente conoce.

Sin embargo, es posible leer el valor de las variables POST si la respuesta del servidor las hace eco en un script.

+2

Estoy totalmente en desacuerdo con su -1. En ninguna parte del PO la pregunta especificó AJAX, por lo que deja abierta la posibilidad de clics de enlace y envíos de formularios no realizados por JavaScript. Este último en particular es un ejemplo donde las variables POST existen pero no están disponibles en el lado del cliente, a menos que la respuesta del servidor sea generada por un script y el script opte por hacer eco de los valores de las variables POST en el código JS. Si pudiera -1 tu comentario, lo haría. –

+1

No estoy hablando de AJAX. Mi argumento se refiere a cualquier forma de solicitud POST. El navegador conoce todos los parámetros enviados como parte de la solicitud HTTP, que incluye, entre otros, los parámetros URL y POST. Algunos de esos parámetros están disponibles para javascript, otros no. Es simplemente una restricción impuesta por el navegador, podría muy bien dar acceso a los parámetros POST de JS, pero no es así, esa es la simple verdad. – GetFree

+0

No entiendes mi punto. Nadie escribirá un JavaScript esperando que las variables POST estén disponibles a menos que el servidor las proporcione de manera explícita. Si el servidor no los proporciona, entonces, en lo que concierne a un desarrollador web que escriba el código JavaScript, podría ser que no estén del lado del cliente. –

-1
$(function(){ 
    $('form').sumbit{ 
     $('this').serialize(); 
    } 
}); 

En jQuery, el código anterior le daría la cadena URL con los parámetros POST en la URL. No es imposible extraer los parámetros POST.

Para usar jQuery, debe incluir la biblioteca jQuery. Utilice la siguiente información para que:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script> 
+4

Esto solo obtendría los parámetros de POST en la página donde se envía el formulario ** desde **. Parece una suposición segura de que OP desea obtener los parámetros de POST en la página donde se envió el formulario ** a **. Eso es imposible de hacer –

18

Un pequeño pedazo de PHP para obtener el servidor para poblar una variable de JavaScript es rápido y sencillo:

var my_javascript_variable = <?php echo $_POST['my_post'] ?>; 

A continuación, sólo acceder a la variable de JavaScript en la forma normal.

+8

Tenga cuidado de escapar/agregar cotizaciones/etc. a tus datos POST si vas por esta ruta. Una alternativa es usar json_encode(), que funcionará para casi cualquier tipo de datos. Ejemplo: http://www.abeautifulsite.net/passing-data-from-php-to-javascript/ – claviska

+0

Ahora, esto es lo que llamo pensar de la caja. –

+0

Esta es la forma más sencilla de hacer esto con seguridad. Esto funcionó para mí en wordpress al crear una nueva página de tema y simplemente exponer los datos de la publicación en el nivel de la ventana como window.my_prefix_post_data = ; y luego acceder a los datos de la publicación desde cualquier ámbito fácilmente de esa manera. Esto no se recomienda para sitios con una gran cantidad de datos de correos confidenciales que se publican todo el tiempo, pero para el alcance de nuestra página/sitio funciona muy bien. –

1

POST es lo que el navegador envía desde el cliente (su servidor) al servidor web. Los datos de envío se envían al servidor a través de encabezados http, y solo están disponibles en el extremo del servidor o entre la ruta (por ejemplo, un servidor proxy) desde el cliente (su navegador) hasta el servidor web. Por lo tanto, no se puede manejar desde scripts del lado del cliente como JavaScript. Debe manejarlo a través de scripts del lado del servidor como CGI, PHP, Java, etc. Si aún necesita escribir en JavaScript, necesita tener un servidor web que comprenda y ejecute JavaScript en su servidor como Node.js

-1

POST las variables solo están disponibles para el navegador si el mismo navegador las envió en primer lugar. Si otro formulario del sitio web se envía a través de POST a otra URL, el navegador no verá los datos POST ingresados.

SITIO A: tiene un formulario enviado a una URL externa (sitio B) usando POST SITIO B: recibirá el visitante pero con solo variables GET

1

Puede leer el parámetro de solicitud de publicación con jQuery-PostCapture (@ssut/jQuery-PostCapture).

El complemento PostCapture consiste en algunos trucos.

Al hacer clic en el botón enviar, se enviará el evento onsubmit.

En ese momento, PostCapture se serializará los datos del formulario y se guardará en html5 localStorage (si está disponible) o en el almacenamiento de cookies.

3

¿Por qué no utilizar localStorage o de alguna otra manera para establecer el valor que desea pasar?

¡De esta manera usted tiene acceso desde cualquier lugar!

+2

¿por qué no solo una simple cookie? –

+0

@jj_ ¡Eso funcionaría también! –

-3
<head><script>var xxx = ${params.xxx}</script></head> 

Usando EL expresión $ {} param.xxx en <head> para obtener parametros de un método post, y asegúrese de que el archivo js se incluye después <head> para que pueda manejar un parámetro como 'XXX' directamente en su js archivo.

-1

Podemos recopilar los parámetros de formulario enviados utilizando POST con el uso del concepto serialize.

Prueba esto:

$('form').serialize(); 

Sólo encerrarlo alerta, que muestra todos los parámetros incluyendo oculto.

0

Puede 'json_encode' codificar primero sus variables de publicación a través de PHP. A continuación, cree un objeto JS (matriz) a partir de las variables de publicación codificadas JSON. A continuación, utilice un bucle JavaScript para manipular esas variables ... como - en este ejemplo de abajo - para rellenar un formulario de formulario HTML:

<script> 

    <?php $post_vars_json_encode = json_encode($this->input->post()); ?> 

    // SET POST VALUES OBJECT/ARRAY 
    var post_value_Arr = <?php echo $post_vars_json_encode; ?>;// creates a JS object with your post variables 
    console.log(post_value_Arr); 

    // POPULATE FIELDS BASED ON POST VALUES 
    for(var key in post_value_Arr){// Loop post variables array 

     if(document.getElementById(key)){// Field Exists 
      console.log("found post_value_Arr key form field = "+key); 
      document.getElementById(key).value = post_value_Arr[key]; 
     } 
    } 


</script> 
-1
function getParameterByName(name, url) { 
      if (!url) url = window.location.href; 
      name = name.replace(/[\[\]]/g, "\\$&"); 
      var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
       results = regex.exec(url); 
      if (!results) return null; 
      if (!results[2]) return ''; 
      return decodeURIComponent(results[2].replace(/\+/g, " ")); 
     } 
var formObj = document.getElementById("pageID"); 
formObj.response_order_id.value = getParameterByName("name"); 
+0

Esta es la variable GET, OP pidió específicamente POST var y notó que ya tiene variables GET fácilmente. –

0

Una opción es establecer una cookie en PHP.

Por ejemplo: una cookie llamada inválida con el valor de $invalid expira en 1 día:

setcookie('invalid', $invalid, time() + 60 * 60 * 24); 

luego leerlo de vuelta en JS (usando el plugin JS Cookie):

var invalid = Cookies.get('invalid'); 

if(invalid !== undefined) { 
    Cookies.remove('invalid'); 
} 

Ahora puede acceder al valor de la variable invalid en JavaScript.

Cuestiones relacionadas