Cruz de Dominio JSONP Respuesta XML

Estoy haciendo una api cruz solicitud de dominio usando JSONP y el servidor externo me devuelve el resultado en formato XML, a continuación es mi código:

$.ajax({
    type: "Get",
    url: "http://domain.com/function?Data=1234567890",
    xhrFields: {withCredentials: true},
    dataType: "JSONP text xml",
    contentType: "application/xml",
    cache: false,
    success: function(xml)
    {
    alert($(this).find('ResponseStatus').text());
    }
});

que me devuelve un xml, pero junto con eso, se genera un error que dice «testigo Inesperado <» que por desgracia deja a mi y procesamiento de i dont obtener un mensaje de alerta. Alguna idea?

Mejor

  • Realmente espero que no sea su código y de que algo ha ido terriblemente mal con un copiar y pegar…
  • Gracias por la corrección Perry…!!!!
  • Antes de que nos fijamos en el código, hay cuestiones más importantes que tienes que atender. Como regla general, usted no puede analizar xml usando jsonp. Esto se explica mucho mejor que yo podía hacer aquí stackoverflow.com/questions/10068963/… (por favor, considere la posibilidad de que el autor que reúne a +1). Verás que a pesar de que hay soluciones posibles, pero, como @jmort253 señala, si tienes mucho control sobre la salida de el servidor, harías mejor en formato JSON, para empezar con
  • Si yo estuviera en tu lugar y yo no podía hacer nada con el formato de salida, probablemente me vistazo a pegar un par de líneas de PHP o Python (o su arma de elección) en mi servidor web para actuar como un proxy.
InformationsquelleAutor adarsh723 | 2014-06-24

1 Kommentar

  1. 12

    Como se ha mencionado en los comentarios anteriores, la cruz de dominio xml desde javascript es un no-no, a menos que usted tiene el control sobre la aplicación que es de escupir el XML y se puede utilizar un formato truco para ‘engañar’ a la secuencia de comandos en el análisis como JSON.
    Si usted puede hacer esto, sin embargo, la pregunta tendría que ser ¿por qué no acaba de formato JSON, que en el primer lugar?
    Así Que… Opciones

    1. Formato de la salida de la aplicación para la manipulación con JSONP. Suponiendo que usted no puede hacer que en tu caso, entonces…
    2. Utilizar un proxy local en tu servidor web. Hay un montón de simple proxy de los ejemplos que hay en PHP, python o cualquier otro idioma que no tiene de la cruz-restricciones de dominio. En cuanto a tu script en la página luego de que se trate es un local de la petición AJAX. Si usted no puede hacer eso, entonces…
    3. Una posibilidad sería el uso de un intermediario como yql. yql y jquery puede hacer un montón de estas xml problemas desaparecen. Desventaja, por supuesto, es que usted está enviando cosas a través de un tercero que usted no tiene ningún control.

    Algo como esto:

    //find some demo xml - DuckDuckGo is great for this
        var xmlSource = "http://api.duckduckgo.com/?q=StackOverflow&format=xml"
    
    //build the yql query. Could be just a string - I think join makes easier reading
        var yqlURL = [
            "http://query.yahooapis.com/v1/public/yql",
            "?q=" + encodeURIComponent("select * from xml where url='" + xmlSource + "'"),
            "&format=xml&callback=?"
        ].join("");
    
    //Now do the AJAX heavy lifting        
        $.getJSON(yqlURL, function(data){
            xmlContent = $(data.results[0]);
            var Abstract = $(xmlContent).find("Abstract").text();
            console.log(Abstract);
        });

    Por supuesto, en ese ejemplo que usted está trayendo de vuelta los datos xml y la búsqueda local – la opción está ahí para sintonizar la instrucción select para traer de vuelta lo que usted desea.

    Espero que ayude

    • Muchas gracias Perry.. tu segunda opción me dio el hack… he utilizado locales petición AJAX en uno de mi página y, a continuación, PHP y CURL me salvó….
    • Duck Duck go api cambiado? el ejemplo de los registros de cadena vacía. El uso de yql parece funcionar bien.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...