jQuery mobile: solicitud JSONP usando $.ajax(), $.getJSON no activa la función de devolución de llamada

Intento obtener datos JSON de mi servidor web pero no funciona.

$.mobile.showPageLoadingMsg();
//$.getJSON('http://localhost:8000/'+site+'/?format=json&callback=?', {}, function(){alert();});

$.ajax({
    url : 'http://localhost:8000/'+site +'/?format=json&callback=?',
    type : 'GET',
    dataType : 'jsonp',
    jsonp : 'callback',
    success : function(){alert('success');},
    error : function(){alert('fail')}
});

$.getJSON, $.ajax la función de devolución de llamada de dos métodos no se activó en absoluto. ¿Cuál es el problema?

El código de mi servidor web:

response_data.append({
            'user_nickname' : post.user_nickname,
            'title' : post.title,
            'recommend' : post.recommend,
            'oppose' : post.oppose,
            'date' : str(post.date),
            'hit' : post.hit,
            'commentcount' : post.commentcount
            })
    return HttpResponse(simplejson.dumps(response_data), mimetype='application/json')

En el inspector, vuelve get, 200, vale, entonces HttpResponse no tiene problema.

Aquí está la respuesta:

[{"hit": 5, "title": " \uc624\ud1a0\uc774\uc2a4\ucf00\uc774\ud551 \ub418\ub294\uac00", "commentcount": 0, "oppose": 0, "recommend": 0, "date": "2012-07-24 07:01:22.453000+00:00", "user_nickname": "\ud55c\uae00\ub85c\uc5bc\ub9c8\ub098\uae38\uac8c\uae4c\uc9c0\uac00\ub2a5\ud558\ub7ef\uc778\u3131\u3147\u3139\u3147\ub05d"}, {"hit": 4, "title": "\uc5ec\uae30 \uae00\uc4f0\uba74?", "commentcount": 1, "oppose": 0, "recommend": 0, "date": "2012-07-24 06:52:05.125000+00:00", "user_nickname": "\ud55c\uae00\ub85c\uc5bc\ub9c8\ub098\uae38\uac8c\uae4c\uc9c0\uac00\ub2a5\ud558\ub7ef\uc778\u3131\u3147\u3139\u3147\ub05d"}]

$.ajax() nunca activa la función de devolución de llamada exitosa. solo llama errores alert('fail');

preguntado el 28 de julio de 12 a las 09:07

¿Tiene una función de devolución de llamada de javascript? (como en la función callback() { alert('hola'); } )? -

1 Respuestas

Su respuesta no es JSONP: es solo una matriz JSON.

Si cambias el datatype en tu ajax llamar a 'json', entonces su devolución de llamada debería dispararse.

Pero si realmente necesita usar JSONP, si está tratando de comunicarse entre sitios, entonces deberá devolver JSONP válido como respuesta del servidor. Su servidor deberá responder con una cadena en forma de una llamada de función javascript, utilizando el valor de la jsonp parámetro como el nombre de la función y la respuesta JSON como el argumento de la función.

Respondido 28 Jul 12, 17:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.