jQuery 读取 xml 错误
我正在尝试使用 jQuery 和雅虎地图服务编写一个简单的位置查找调用。即,用户将一个位置放入搜索框中,当他们绑定 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);
}
});
}
}
运行此代码会生成一个包含以下文本的文本框:undefinedparsererror--undefined
当我从地理编码页面创建 XML 文件并指向相反,jQuery 的 url 一切正常。
感谢您的任何帮助。
I am trying to write a simple location lookup call with jQuery and the yahoo maps service. i.e. A user puts a location into a search box and as they are tying jQuery calls a page on my site that returns the XML from 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" %>
My search page uses the following jQuery code to call this page:
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);
}
});
}
}
running this code produces a text box with the following text: undefinedparsererror--undefined
When I create an XML file from my geocode page and point the url of the jQuery to that instead everything works properly.
Thanks for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
确保将 geocode.aspx 中的
Response.ContentType
设置为text/xml
。Make sure you are setting the
Response.ContentType
from geocode.aspx astext/xml
.告诉生成 xml 的页面将 contentType 作为“
txt/xml
”发送Tell your page that generates the xml to send the contentType as "
txt/xml
"好吧,经过几个小时的搜索,我终于找到了解决方案。问题出在 XML 的生成上。主要是 HTTP 状态代码和其他位。因此,对于其他正在寻找此类问题解决方案的人来说:
Geocode.aspx.cs 应该如下所示:
Well, after a few more hours of searching I have managed to find a solution. The problem was in the generation of the XML. Primarily HTTP status codes and other bits. So for anyone else looking for a solution to a problem like this:
Geocode.aspx.cs should look like this instead: