25
No entendí bien cómo trabajar con la devolución de llamada para la función ajax de JQuery.Función de devolución de llamada para JSONP con JQuery ajax
tengo el siguiente código en el código JavaScript:
try {
$.ajax({
url: 'http://url.of.my.server/submit?callback=?',
cache: false,
type: 'POST',
data: $("#survey").serialize(),
dataType: "jsonp",
timeout: 200,
crossDomain: true,
jsonp: 'jsonp_callback',
success: function (data, status) {
mySurvey.closePopup();
},
error: function (xOptions, textStatus) {
mySurvey.closePopup();
}
});
} catch (err) {
mySurvey.closePopup();
}
Y en el lado del servidor (AppEngine/Python) me sale el valor del parámetro de devolución de llamada y responder con
self.response.headers['Content-Type'] = 'application/json; charset=utf-8'
self.response.out.write(callback + '({"msg": "ok"});')
Pero entonces Obtengo "Error: jQuery152042227689944248825_1317400799214 is not a function"
en el navegador.
¿Cuál es la forma correcta de manejar esto? Ahora mismo obtengo los resultados que necesito, pero el hecho de que sé que no está bien me está molestando.
supongo que el parámetro POST se ignora. Como sé, JSONP solo puede hacer solicitudes GET porque lo que realmente hace es crear una etiqueta
eliminar esta línea:
O reemplazar esta línea:
porque en la actualidad se está pidiendo jQuery para crear un nombre de función de devolución de llamada al azar con
callback=?
y luego decirle a jQuery que desea usejsonp_callback
en su lugar.Fuente
2011-09-30 17:21:49 Joe
jsonp es el nombre del parámetro de cadena de consulta que se define para ser aceptable por el servidor mientras el jsonpCallback es el nombre de la función JavaScript para ser ejecutado en el cliente.
Cuando se utilizan tales url:
el signo de interrogación? al final, se le indica a jQuery que genere una función aleatoria, mientras que el comportamiento predefinido de la función autogenerada invocará simplemente la devolución de llamada -la función de éxito en este caso- pasando los datos json como parámetro.
Lo mismo ocurre aquí si está utilizando $ .getJSON con? marcador de posición que va a generar una función aleatoria, mientras que el comportamiento de la función predfined autogenerada se acaba de invocar la devolución de llamada:
Fuente
2015-06-27 09:43:46
"la función autogenerada solo invocará la devolución de llamada", ¡Gracias! – Eddy