2012-06-08 12 views
8

Tengo pocos servicios, con URL limpiasLlamada AJAX JSONP que agrega automáticamente el parámetro de devolución de llamada. ¿Cómo eliminar eso?

y al llamar a cada servicio, se comprueba el patrón de URL.

Ahora estoy llamando a esas URL a través de AJAX desde otro servidor utilizando la técnica JSONP.

Pero, durante la llamada, está agregando los parámetros callback y _(timestamp) con las URL de servicio, automáticamente.

El parámetro de marca de tiempo se elimina, agregando cache : true. Pero no puedo eliminar el parámetro de devolución de llamada.

aquí es mi AJAX llamando código-

$.ajax({ 
     type: 'GET', 
     url : "http://test.com/test/services/getFollowMeHistory/1/1/50", 
     dataType:'jsonp', 
     cache : true, 
     crossDomain : true, 
     //jsonpCallback : false, 

     error : function(XMLHttpRequest, textStatus, errorThrown) { 
      alert("Error occured while loading Loads."+textStatus); 
      } 
     }); 
}); 

Su llamar la URL como- http://test.com/test/services/getFollowMeHistory/1/1/50?callback=false y estoy recibiendo 404 del lado del servicio.

Mi servicio devuelve los datos como callbackMethod ({..JSON RESPONSE ...}). Entonces, automáticamente llamará al function callbackMethod(data) en mi script. No necesito ese parámetro de devolución de llamada en mi URL.

sólo tiene que quitar la parte de la URL ?callback=...

Plz ayuda.

+0

Es JSONP, eso es lo que es JSONP. –

+0

El parámetro de devolución de llamada le dice al servidor qué devolución de llamada devolver con los datos. –

+0

del lado del servicio- estoy devolviendo json as- "callbackMethod ({... respuesta json ..})". Por lo tanto, se llamará automáticamente "function callbackMethod (data)" en mi script. –

Respuesta

10

Debe establecer jsonp: false y no jsonpCallback: false. También debe establecer explícitamente la opción jsonpCallback en el nombre de devolución de llamada que espera recibir del servicio.

Referencia: http://api.jquery.com/jQuery.ajax/

+0

No lo he probado, simplemente leyendo los documentos, pero aparentemente con 'jsonp: false', jQuery no pasará el 'parámetro de devolución de llamada', pero todavía esperará una respuesta JSONP; es por eso que requiere el parámetro 'jsonpCallback' para indicar explícitamente el nombre de la función de devolución de llamada para crear, de acuerdo con lo que se espera del servidor. – lanzz

+0

Gracias, pero es una verdadera llamada entre dominios –

+0

+1, este es definitivamente el camino a seguir si no desea utilizar el parámetro de devolución de llamada. –

1
  1. Si establece Cacheing a true es decir, va a almacenar en caché la respuesta de solicitud de , y todas las llamadas JSONP posteriores no volverá nuevos datos .

  2. Sin la devolución de llamada JSONP no se puede usar, porque no hay ninguna forma de para leer la respuesta. La devolución de llamada es el objetivo de JSONP.

  3. Su servidor debe estar configurado para manejar una solicitud JSONP. La url que envíe no afectará al lado del cliente. Entonces su problema debe estar en el lado del servidor. Que es donde deberías manejarlo. Hacer esto no es un problema jQuery.

Si está utilizando una devolución de llamada personalizados Prueba esto, pero una devolución de llamada personalizado no es lo mismo que la eliminación de la devolución de llamada:

jsonpCallback : "callbackMethod" 
+0

desde el lado del servicio- estoy devolviendo json as- "callbackMethod ({... respuesta json ..})". Por lo tanto, se llamará automáticamente "function callbackMethod (data)" en mi script. No necesito ese parámetro de devolución de llamada. –

+0

He actualizado mi respuesta. – Fresheyeball

Cuestiones relacionadas