Pregunta

¿Cómo enviar una solicitud http con cualquiera de los métodos de publicación / obtención usando javascript como administrador de eventos? ¡Gracias! Paul

¿Fue útil?

Solución

Está bien, no quieres usar Ajax. ¡Puedes usar un controlador de eventos para enviar un formulario!

<a href='#' onclick='cow_submit("zoodle")'>send</a>
<form method='post' id='formie' action='find_some_action.php'>
  <input type='hidden' id='snoutvar' name='snoutvar' value='snout'>
</form>

<script>
function cow_submit(a_var_to_set){
  var plip=document.getElementById('formie');
  var snout=document.getElementById('snoutvar');
  snout.value=a_var_to_set;
  plip.submit();
  }

Consulte https://developer.mozilla.org/en/DOM/form

Otros consejos

use XmlHttpRequest

código de muestra:

var client = new XMLHttpRequest();
client.onreadystatechange = handler;
client.open("GET", "test.xml");
client.send();

function handler()
{
   // your handler
}

Puede usar XMLHttpRequest para enviar solicitudes desde javascript

Enviando solicitud GET

var url = "get_data.php";
var params = "lorem=ipsum&name=binny";
http.open("GET", url+"?"+params, true);
http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
}
http.send(null);

Enviando solicitud POST

var url = "get_data.php";
var params = "lorem=ipsum&name=binny";
http.open("POST", url, true);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
}
http.send(params);

Y no se olvide de codificar los parámetros usando encodeURIComponent para la codificación del valor param en caso de que el usuario ingrese

por ejemplo

params="paramName="+encodeURIComponent(paramValue);

La clase estándar para hacer esto es XmlHttpRequest , pero no es universalmente compatible. En algunos navegadores tienes que usar ActiveXObject (" Microsoft.XMLHTTP ") .

Busque en el sistema jQuery que proporciona métodos de descarga HTTP (estilo AJAX) independientemente de las API del navegador subyacente (por lo tanto, evitando mucho del código que se muestra en la respuesta de Tzury).

La documentación de jQuery AJAX se encuentra en http://docs.jquery.com/Ajax

Debes intentar agregar una cadena en un campo oculto y luego llamar a form.submit () para enviar tu formulario a la página definida en acción.

<script type="text/javascript">
  function doTestFormSubmit(yourString) {
    document.getElementById("myString").value=myString;
    document.getElementById("testForm").submit();
  }
</script>
<form name="testForm" id="testForm" action="yourDesiredPage.php" method="post">
   <input type="hidden" name="myString" id="myString" value=""/>
</form>

Tutorial Ajax ( http://code.google.com/ edu / ajax / tutorials / ajax-tutorial.html )

var obj;

function ProcessXML(url) {
  // native  object

  if (window.XMLHttpRequest) {
    // obtain new object
    obj = new XMLHttpRequest();
    // set the callback function
    obj.onreadystatechange = processChange;
    // we will do a GET with the url; "true" for asynch
    obj.open("GET", url, true);
    // null for GET with native object
    obj.send(null);
  // IE/Windows ActiveX object
  } else if (window.ActiveXObject) {
    obj = new ActiveXObject("Microsoft.XMLHTTP");
    if (obj) {
      obj.onreadystatechange = processChange;
      obj.open("GET", url, true);
      // don't send null for ActiveX
      obj.send();
    }
  } else {
    alert("Your browser does not support AJAX");
  }
}


function processChange() {
    // 4 means the response has been returned and ready to be processed
    if (obj.readyState == 4) {
        // 200 means "OK"
        if (obj.status == 200) {
            // process whatever has been sent back here:
        // anything else means a problem
        } else {
            alert("There was a problem in the returned data:\n");
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top