【问题标题】:jQuery read xml errorjQuery读取xml错误
【发布时间】:2010-01-29 13:30:28
【问题描述】:

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

地理编码.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(); 
}

地理编码.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);
            }
        });
    }
}

运行此代码会生成一个带有以下文本的文本框:undefinedparsererror--undefined

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

感谢您的帮助。

【问题讨论】:

    标签: jquery xml yahoo-maps


    【解决方案1】:

    确保将 geocode.aspx 中的 Response.ContentType 设置为 text/xml

    【讨论】:

      【解决方案2】:

      告诉生成 xml 的页面将 contentType 发送为“txt/xml

      Response.ContentType="text/xml";
      

      【讨论】:

        【解决方案3】:

        好吧,经过几个小时的搜索,我终于找到了解决方案。问题在于 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()); 
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-03
          • 2012-11-04
          • 2011-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多