jQuery Errore di lettura xml
-
23-09-2019 - |
Domanda
Sto cercando di scrivere una semplice chiamata di ricerca posizione con jQuery e il yahoo maps servizio. vale a dire un'utente inserisce una posizione in una casella di ricerca e come essi stanno legando jQuery chiama una pagina sul mio sito che restituisce l'XML da Yahoo.
Geocode.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
var url= "http://local.yahooapis.com/MapsService/V1/geocode?appid=SjCk7UjV34H0L9VoW5dFEXFGvsQuKX0xwIPNBX.rY8XxrWZbIYeSScFGuMrJyen_QwGKpLk-&location=" + Request.QueryString["location"];
var oBuilder = new StringBuilder();
var oStringWriter = new StringWriter(oBuilder);
var oXmlReader = new XmlTextReader(url);
var oXmlWriter = new XmlTextWriter(oStringWriter);
while (oXmlReader.Read())
{
oXmlWriter.WriteNode(oXmlReader, true);
}
oXmlReader.Close();
oXmlWriter.Close();
Response.Clear();
Response.Write(oBuilder.ToString());
Response.Flush();
Response.End();
}
Geocode.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Geocode.aspx.cs" Inherits="Search_Geocode" %>
La mia pagina di ricerca utilizza il seguente codice jQuery per chiamare questa pagina:
function findAddress() {
var address = document.getElementById('ctl00_ContentPlaceHolder1_Location').value;
if (address.length > 3) {
$.ajax({
type: "GET",
url: "Geocode.aspx?location=" + address,
dataType: "xml",
success: function(xmlData) {
$(xmlData).find('Result').each(function() {
document.getElementById('ctl00_ContentPlaceHolder1_Lat').value = $(this)[0].selectSingleNode('Latitude').text;
document.getElementById('ctl00_ContentPlaceHolder1_Long').value = $(this)[0].selectSingleNode('Longitude').text;
document.getElementById("locationspan").innerHTML = $(this)[0].selectSingleNode('Address').text + '<br />' + $(this)[0].selectSingleNode('City').text + '<br />' + $(this)[0].selectSingleNode('State').text;
var mapList = document.getElementById("divAddressSelector");
mapList.className = 'mapAddressSelectorHide';
});
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest + '--' + textStatus + '--' + errorThrown);
}
});
}
}
l'esecuzione di questo codice produce una casella di testo con il seguente testo: undefinedparsererror - non definito
Quando creo un file XML dalla mia pagina di geocodifica e indico l'url del jQuery per che invece tutto funziona correttamente.
Grazie per qualsiasi aiuto.
Soluzione 3
Bene, dopo un paio di ore di ricerca sono riuscito a trovare una soluzione. Il problema era nella generazione del XML. Principalmente codici di stato HTTP e altri bit. Quindi, per chiunque altro alla ricerca di una soluzione ad un problema come questo:
Geocode.aspx.cs dovrebbe essere simile a questo, invece:
protected void Page_Load(object sender, EventArgs e)
{
var url= "http://local.yahooapis.com/MapsService/V1/geocode?appid=SjCk7UjV34H0L9VoW5dFEXFGvsQuKX0xwIPNBX.rY8XxrWZbIYeSScFGuMrJyen_QwGKpLk-&location=" + Request.QueryString["location"];
var oBuilder = new StringBuilder();
var oStringWriter = new StringWriter(oBuilder);
var oXmlReader = new XmlTextReader(url);
var oXmlWriter = new XmlTextWriter(oStringWriter);
while (oXmlReader.Read())
{
oXmlWriter.WriteNode(oXmlReader, true);
}
oXmlReader.Close();
oXmlWriter.Close();
// Remove all headers and data in the Response.
Response.Clear();
//set the mime type
Response.ContentType = "text/xml";
// Buffer output and send it out in one chunk.
Response.BufferOutput = true;
// Specify a successful HTTP status code.
Response.StatusCode = 200;
Response.Write(oBuilder.ToString());
}
Altri suggerimenti
Assicurarsi che si sta impostando l'Response.ContentType
da geocode.aspx come text/xml
.
Raccontaci la tua pagina che genera il codice XML per inviare il contentType come "txt/xml
"
Response.ContentType="text/xml";