2009-08-07 20 views
18

Quiero publicar parámetros en una URL usando el método POST, pero no puedo usar un formulario. Incluso si utilizo un formulario, debería publicarse automáticamente sin interacción con el usuario. es posible? ¿Cómo puedo hacer esto?Publicar parámetros en una url usando el método POST sin usar un formulario

+0

Esto puede ayudar: http://stackoverflow.com/questions/28395/passing-post-values-with-curl – random

+1

¿Está relacionado de alguna manera con PHP? – innaM

Respuesta

13

Se puede utilizar JavaScript y XMLHTTPRequest (AJAX) para realizar un POST sin necesidad de utilizar un formulario. Compruebe this link hacia fuera. Sin embargo, tenga en cuenta que necesitará JavaScript habilitado en su navegador.

+1

Esto no funcionaría si la URL está en otro dominio. ¿Derecha? –

+0

Funcionaría incluso si la URL está en otro dominio. –

+0

@UweKeim ¡CORRECTO! –

0

se puede hacer con CURL o AJAX. La respuesta es tan críptica como la respuesta.

4

cURL es una opción, también utiliza Ajax, aunque resolver problemas de fondo con el front-end no es tan claro.

Un post muy útil sobre hacerlo sin curvatura es éste: http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

El código para hacer esto (no probado, no mejorado, desde la entrada del blog):

function do_post_request($url, $data, $optional_headers = null) 
{ 
    $params = array('http' => array(
       'method' => 'POST', 
       'content' => $data 
      )); 
    if ($optional_headers !== null) { 
     $params['http']['header'] = $optional_headers; 
    } 
    $ctx = stream_context_create($params); 
    $fp = @fopen($url, 'rb', false, $ctx); 
    if (!$fp) { 
     throw new Exception("Problem with $url, $php_errormsg"); 
    } 
    $response = @stream_get_contents($fp); 
    if ($response === false) { 
     throw new Exception("Problem reading data from $url, $php_errormsg"); 
    } 
    return $response; 
} 
24

Usando jQuery.post

$.post(
    "http://theurl.com", 
    { key1: "value1", key2: "value2" }, 
    function(data) { 
    alert("Response: " + data); 
    } 
); 
Cuestiones relacionadas