2010-09-30 14 views
27

Tengo el siguiente código:

$.get('http://www.example.org', {a:1,b:2,c:3}, function(xml) {}, 'xml'); 

¿Hay una manera de obtener la URL utilizada para hacer la petición después de que la solicitud ha sido hecha (en la devolución de llamada o de lo contrario)?

Quiero la salida:

http://www.example.org?a=1&b=2&c=3 
+0

Cuando se llama al método get(), que necesita para aprobar el URL y el parámetro. Entonces, ¿por qué no construyes una cadena para completar la URL en la función de devolución de llamada? – Vikas

Respuesta

38

no puedo conseguirlo para trabajar en $.get() porque no tiene complete evento.

Es mejor utilizar $.ajax() como este,

$.ajax({ 
    url: 'http://www.example.org', 
    data: {'a':1,'b':2,'c':3}, 
    dataType: 'xml', 
    complete : function(){ 
     alert(this.url) 
    }, 
    success: function(xml){ 
    } 
}); 

craz demo

+3

¡Tan inteligente! Me sorprende que this.url no esté disponible en la exitosa devolución de llamada – Christopher

+0

¿Hay alguna forma de hacer lo mismo en angularjs? –

+0

No estoy seguro ... No estoy familiarizado con angularjs ... debe hacer una pregunta aparte al respecto ... – Reigel

3

Desde jQuery.get es sólo una forma abreviada de jQuery.ajax, otra forma sería utilizar la opción de este último uno context, como se indica en el documentation:

la referencia this dentro de todas las devoluciones de llamada es el objeto en el pas opción de contexto sed a $.ajax en la configuración; si no se especifica el contexto, esta es una referencia a la configuración de Ajax.

Así que usaría

$.ajax('http://www.example.org', { 
    dataType: 'xml', 
    data: {'a':1,'b':2,'c':3}, 
    context: { 
    url: 'http://www.example.org' 
    } 
}).done(function(xml) {alert(this.url}); 
+0

Gracias. Me url ayudó a depurar mi error de envío de formularios en Rails. Se creó un nuevo recurso con la "nueva" ruta de acción del controlador MyResource http: // localhost: 3000/my_resource/new. Un enlace realizó una solicitud de AJAX a la acción de controlador Rails personalizada 'change_partial'. En las opciones de AJAX usé 'type: 'GET', url: 'change_partial', dataType: 'html''. Al hacer clic en el enlace se llama acción del controlador de backend, devolviendo el HTML renderizado parcial. Pero al enviar el formulario con errores de validación, la ruta 'create' http: // localhost: 3000/my_resource/y el enlace de clics provocaron errores. Solucionado por cambio 'url: 'my_resource/change_partial'' –

Cuestiones relacionadas