我想写一个简单位查询呼叫有文和雅虎地图服务。即一个用户提出一个位置到搜索框并为他们绑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" %>

我的搜索页面使用以下。叫这个页面:

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--不确定

当我create an XML文件从我的地理编码页和点的url延,而不是一切正常工作。

谢谢你任何帮助。

有帮助吗?

解决方案 3

嗯,经过几个小时的搜寻我已经找到一个解决方案。问题在于产生的XML。主要是HTTP状态编码和其他的位。因此,对于任何其他人寻找问题的解决方案是这样的:

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

其他提示

确保你的设定 Response.ContentType 从地理编码.aspx作 text/xml.

告诉你的网页,产生xml发送contentType为"txt/xml"

Response.ContentType="text/xml";
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top