jQuery读取xml错误

jQuery读取xml错误,jquery,xml,yahoo-maps,Jquery,Xml,Yahoo Maps,我正在尝试使用jQuery和yahoo地图服务编写一个简单的位置查找调用。i、 用户将一个位置放入搜索框中,当他们绑定jQuery时,会调用我网站上的一个页面,该页面会从yahoo返回XML Geocode.aspx.cs protected void Page_Load(object sender, EventArgs e) { var url= "http://local.yahooapis.com/MapsService/V1/geocode?appid=SjCk7UjV34H0L

我正在尝试使用jQuery和yahoo地图服务编写一个简单的位置查找调用。i、 用户将一个位置放入搜索框中,当他们绑定jQuery时,会调用我网站上的一个页面,该页面会从yahoo返回XML

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" %>

我的搜索页面使用以下jQuery代码调用此页面:

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);
            }
        });
    }
}
函数findAddress(){
var address=document.getElementById('ctl00\u contentplaceholder 1\u Location')。值;
如果(address.length>3){
$.ajax({
键入:“获取”,
url:“Geocode.aspx?location=“+地址,
数据类型:“xml”,
成功:函数(xmlData){
$(xmlData).find('Result').each(函数(){
document.getElementById('ctl00\u contentplaceholder 1\u Lat')。值=$(this)[0]。选择SingleNode('Latitude')。文本;
document.getElementById('ctl00_contentPlaceholder 1_Long')。值=$(this)[0]。选择SingleNode('Longitude')。文本;
document.getElementById(“locationspan”).innerHTML=$(此)[0]。selectSingleNode('Address')。text+'
'+$(此)[0]。selectSingleNode('City')。text+'
'+$(此)[0]。selectSingleNode('State')。text; var mapList=document.getElementById(“divAddressSelector”); mapList.className='mapAddressSelectorHide'; }); }, 错误:函数(XMLHttpRequest、textStatus、errorshown){ 警报(XMLHttpRequest+'-'+textStatus+'-'+ErrorSprown); } }); } }
运行此代码将生成一个包含以下文本的文本框:undefinedparsererror--undefined

当我从我的地理代码页面创建一个XML文件并将jQuery的url指向该文件时,一切都正常工作


谢谢您的帮助。

请确保您正在将geocode.aspx中的
Response.ContentType
设置为
text/xml
告诉生成xml的页面将ContentType发送为“
txt/xml


嗯,经过几个小时的搜索,我终于找到了解决办法。问题在于XML的生成。主要是HTTP状态码和其他位。因此,对于任何正在寻找此类问题解决方案的其他人:

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();


    // 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()); 
}
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()); 
}