2009-01-21 26 views
8

Podría simplemente crear un formulario y usarlo para hacer una solicitud POST a cualquier sitio, ya que el método FORM no es asincrónico, necesito saber cuándo la página ha terminado de cargarse. Intenté jugar con esto usando un iframe con un formulario adentro, pero sin éxito.Solicitud POST de dominio cruzado asíncrono a través de JavaScript

¿Alguna idea?

EDITAR

Lamentablemente no tengo ningún control sobre los datos de respuesta, que varía de XML, JSON de texto simple.

+0

¿Por qué fracasaron sus esfuerzos de iframe? Tengo la corazonada de que debería funcionar. ¿Puedes darnos los detalles del enfoque que tomaste? –

+0

Si no tiene control sobre los datos de respuesta, entonces no sería un riesgo de seguridad, porque la página cargada en el iframe puede acceder al DOM de su página usando 'window.parent'. – andho

Respuesta

11

Puede capturar el evento onload de iframe. Dirija su form al iframe y escuche la carga. Sin embargo, no podrá acceder al contenido del iframe, solo el evento.

intentar algo como esto: Bloque

<iframe id='RS' name='RS' src='about:blank' onload='loaded()'></iframe> 

<form action='wherever.php' target='RS' method='POST'>...</form> 

guión:

var loadComplete = 0 
function loaded() { 
    //avoid first onload 
    if(loadComplete==0) { 
     loadComplete=1 
     return() 
    } 
    alert("form has loaded") 
} 
+0

Sí, eso es genial: sé que los datos que quiero usar se han cargado ahora, genial. Pero todavía no puedes usarlo. –

+1

Impresionante, ¿puedes mostrar un ejemplo? No necesito los datos, solo necesito saber cuándo se disparó el evento. –

+0

No veo ningún lugar en la pregunta donde se requieren los datos de respuesta. –

1

Si los datos devueltos de la publicación del dominio cruzado son JSON, puede agregar dinámicamente una etiqueta de script que apunte al URI que devuelve los datos. El navegador cargará esa "secuencia de comandos" que luego podrá acceder desde otra aplicación javascript.

+0

No tengo control sobre los datos de respuesta. –

+0

También la etiqueta de script es solo GET, -1 para eso. –

+0

Ciertamente, el tipo de respuesta no es arbitrario. No le enviarán XML una vez, y luego la próxima solicitud será JSON. Tiene que haber alguna lógica detrás de lo que determina los tipos de devolución. – Sampson

-7

No se puede hacer nada entre dominios utilizando javascript. Tendría que usar un lenguaje de back-end como PHP o asp o algo así.

+1

Baloney. Puede agregar una etiqueta de script al DOM y el SRC de esa secuencia de comandos puede apuntar a cualquier lugar. Las etiquetas de script no aplican la misma política de dominio. –

+0

No, pero el OP indica que debe hacer algo con los datos, ya que puede ser cualquier cosa (texto sin formato, JSON, XML). Una etiqueta de script no cubrirá eso para usted. –

+0

@Diodeus: También dije que no podía hacer nada entre dominios usando javascript, lo que estás describiendo es DOM. –

0

YUI3 's IO objetos ofrece solicitudes entre dominios, sin embargo, lo hace utilizando un pequeño control del flash se incrusta en el página.

Si bien hay un trabajo que abarca las solicitudes seguras de dominio cruzado desde JavaScript, en este momento, debe usar un complemento como Flash o Silverlight como puente para realizar la solicitud.

+0

Está ignorando el hecho de que el método de iframe puede ser utilizado para hacer esta solicitud. – andho

2

SI desea realizar solicitudes de dominios cruzados, debe realizar una llamada JSON o utilizar un proxy en el servidor. Un proxy en el servidor es fácil de configurar, no estoy seguro de por qué la gente lo evita tanto. Establezca reglas para que las personas no puedan usar el proxy para solicitar otras cosas.

Cuestiones relacionadas