Realizar cruz de dominio de la consulta, cómo realizar una determinada función de si la dirección URL en la que se está ejecutando no está disponible (404)?
Yo intente algo como esto:

$.getJSON({
url:'example.php?callback=?',
statusCode: {
404:function(){alert('404');}
},
success :function(data){//do stuff}
});
  • no falta una , después de su url parámetro?
  • Has leído la documentación?
  • Bruno Vieira – no, he cometido un error, la creación de preguntas
  • Ligereza Carreras en Órbita – Sí, lo he leído, pero por desgracia, el ejemplo dado no era útil
InformationsquelleAutor Aleksov | 2012-11-12

4 Comentarios

  1. 0

    Matt publicado un gran respuesta en esta pregunta que puede resolver su problema.

    Usted tendrá que agregar un success de la propiedad en el objeto JSON

    var success = false;
    
    $.getJSON(url, function(json) {
        success = true;
        //... do what you need to do here
    });
    
    //Set a 5-second (or however long you want) timeout to check for errors
    setTimeout(function() {
        if (!success)
        {
            //Handle error accordingly
            alert("Yup, 404"); //string was "Houston, we have a problem."
        }
    }, 5000);

    KeYan hace una buena sugerencia, mediante la comprobación de la XHR estado de propiedad si usted no espera problemas de espera. yo iba a votar en su solución, pero me falta la rep puntos.

    • Houston, tenemos un problema, por desgracia, no funciona…
    • ¿Agregar un {'success':'true'} ?
    • KeYan ejemplo no funciona… tal vez estoy haciendo algo mal? var success = false; $.getJSON(sl+'/404/com.add.lics.php?callback=?',function(g){ success = true; }); setTimeout(function(){ if (!success){ alert("Houston, we have a problem."); } }, 5000);
    • Que realmente funciona correctamente. Estás con éxito la captura de la demora en que si la instrucción! Golpear el final del tiempo de espera se supone que su servicio está tomando mucho tiempo para responder, por lo tanto un 404.
    • Editado el valor de cadena para reflejar lo que realmente está pasando, ya que la palabra ‘problema’ parecía causar un poco de confusión
    • Ok, he intentado utilizar este ejemplo con un tipo diferente de enlace y funciona. Gracias!

  2. 29

    He encontrado este enfoque para resolver la cuestión similar que he tenido, donde yo quería manejar códigos de estado específica de manera diferente. Por ejemplo, el ‘404’ código como el siguiente.

    $.getJSON(AJAX_URL, function(data) {
        //On Success do something.
    
    }).fail(function(jqXHR) {
        if (jqXHR.status == 404) {
            alert("404 Not Found");
        } else {
            alert("Other non-handled error type");
        }
    });

    Hay 3 parámetros que se pasan al fallar método:

    jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});

    Una alternativa de construcción para el error de la opción de devolución de llamada, la .fail()
    método sustituye al obsoleto .error() método. Consulte
    diferido.fail() para detalles de implementación.

    Para el jQuery docs ver:

    http://api.jquery.com/jQuery.ajax/#jqXHR

    http://api.jquery.com/deferred.fail/

    • OMI esto debe ser aceptado respuesta, ya que se basa en una devolución de llamada en lugar de depender de un pre-definido de tiempo de espera para la respuesta.
  3. 1
     $.getJSON({
           url:'example.php?callback=?'       
        },
          success :function(data){//do stuff}
        })
        .error(function(e, x) { if (x.status == 404) alert('404 - page was not available'); });
    • Esto no funciona para…
  4. 0

    Es inherentemente imposible para obtener el código de estado de un JSONP solicitud.

    Puede agregar un error general de controlador para el $.ajax llamada.

Dejar respuesta

Please enter your comment!
Please enter your name here