2010-11-25 18 views
15

Estoy tratando de escribir un XMLHttpRequest utilizando el método POST. He logrado usar XMLHttpRequest en el pasado usando el método GET, pero estoy luchando con POST.AJAX XMLHttpRequest POST

Aquí está mi código:

var xmlhttp = null; 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

var url = "http://www.mysite.com/script.php"; 
var params = "var=1"; 
xmlhttp.open("POST", url, true); 
xmlhttp.send(params); 

que llama básicamente un script PHP que luego se añade un poco de información a una base de datos.

+0

¿Cuál es el error que obtiene? –

+0

No hay ningún error, y según Chrome Inspector, el código está bien. – diggersworld

Respuesta

-6

bien he conseguido solucionar el problema.

Por extraño que parezca, podría estar relacionado con la seguridad de la zona de pruebas, pero en lugar de tener la dirección URL completa, acabo de utilizar la ruta relativa al archivo, y ahora funciona.

Gracias a todos por su apoyo.

49

Olvidó establecer explícitamente el encabezado Content-type, que es necesario al realizar solicitudes POST.

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

Además, no se olvide de utilizar encodeURIComponent para codificar correctamente los parámetros, por ejemplo:

var params = "var=" + encodeURIComponent("1"); 

(en este ejemplo particular, no es necesario, pero cuando se utilizan caracteres especiales como + cosas irán terriblemente mal si no codifica el texto del parámetro).

actualización - también se debe reemplazar todas las instancias de %20 con +, como

var params = params.replace(/%20/g, '+'); 
+0

Intentó agregar el tipo de contenido y la codificación, pero todavía no se llama al script de procesamiento. – diggersworld

+0

@diggers: ¿Cómo se ve el script de procesamiento? ¿Puedes modificar tu pregunta para incluir eso? –

+2

debería ser el encabezado 'Content-Type' aquí, no' Content-type' ... –