Navegador de congelación de múltiples solicitudes AJAX

En la carga de la página, realizo dos solicitudes AJAX: una para extraer el video más reciente de un canal de Youtube y otra para extraer la publicación más reciente de un blog. Ambos scripts funcionan correctamente.

Por la razón que sea, no he podido probarlo en ningún navegador (Chrome, Firefox, Safari y Opera). ¿La solicitud es demasiado grande? He tenido problemas con la compatibilidad con CORS (al menos eso es lo que creo que está sucediendo) mientras uso Chrome, por lo que la solicitud de blog no funciona allí y compensa por completo la solicitud de video (no funciona).

Este es el error que recibo en la Consola de desarrollo de Javascript en Chrome:

XMLHttpRequest no se puede cargar http://devingraham.blogspot.com/rss.xml. El origen nulo no está permitido por Access-Control-Allow-Origin.

Si cambio...

var tmp = $(this).find("content:first").text();

... para encontrar el "título:primero" en su lugar, funciona bien en Safari sin congelarse. Si mantengo el contenido y cargo la página, puedo ver que la publicación se carga correctamente, pero la página se congela y no carga el video. Entonces, ¿quizás es demasiado? Sé con certeza que la publicación que estoy publicando es bastante larga, pero parece una tontería que cause algún problema. Entonces, ¿tienes alguna idea?

Aquí está el guión:

<script type="text/javascript" charset="utf-8">

    $(function() {
          $.ajax({
            type: "GET",
            url: "http://gdata.youtube.com/feeds/base/users/devinsupertramp/uploads?orderby=updated&alt=rss&client=ytapi-youtube-rss-redirect&v=2",
            dataType: "xml",
            success: parseVideo
          });
          $.ajax({
            type: "GET",
            url: "http://devingraham.blogspot.com/rss.xml",
            dataType: "xml",
            success: parseBlog
          });
    });

    function parseVideo(xml) {
        $(xml).find("item:first").each(
            function() {
                var tmp = $(this).find("link:first").text();
                tmp = tmp.replace("http://www.youtube.com/watch?v=", "");
                tmp = tmp.replace("&feature=youtube_gdata", "");
                tmp2 = "http://www.youtube.com/embed/" + tmp + "?autoplay=1&controls=0&rel=0&showinfo=0&autohide=1";
                var iframe = $("#ytplayer");
                $(iframe).attr('src', tmp2);
            }
        );
    }

    function parseBlog(xml) {
        $(xml).find("entry:first").each(
            function() {
                var tmp = $(this).find("content:first").text();
                var post = $("#blog");
                post.append(tmp);
            }
        );
    }
</script>

preguntado el 22 de mayo de 12 a las 16:05

Abra Firebug, abra la pestaña NET y eche un vistazo a la secuencia de solicitud/respuesta. Esto puede darte una pista. -

Todo lo que puedo ver es que Origin es nulo. Pero no estoy seguro de lo que esto significa. -

¿Conoce la misma política de origen con respecto a las solicitudes de AJAX? w3.org/Security/wiki/Same_Origin_Policy -

He leído un poco al respecto, pero no sé qué significa con respecto a mis solicitudes o cómo puedo solucionarlo (soy muy nuevo en AJAX/jQuery). -

1 Respuestas

De forma predeterminada, no puede realizar solicitudes AJAX entre dominios debido a la Política del mismo origen.

Puede sortear esto, pero requiere la cooperación del sitio en el otro dominio para permitir explícitamente este tipo de solicitud.

Ver: Formas de eludir la política del mismo origen

contestado el 23 de mayo de 17 a las 12:05

Voy a mirar en estos. Supongo que no me di cuenta de lo complicado que era con respecto a los orígenes de las solicitudes. - Jon

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