2010-01-29 3 views
0

jQuery와 yahoo 맵 서비스로 간단한 위치 검색 호출을 작성하려고합니다. 즉 사용자가 검색 창에 위치 정보를 입력하면 jQuery는 야후의 XML을 반환하는 내 사이트의 페이지를 호출합니다.jQuery read xml error

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 :

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

이 코드를 실행 :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Geocode.aspx.cs" Inherits="Search_Geocode" %> 

내 검색 페이지가이 페이지를 호출하는 다음과 같은 jQuery 코드를 사용 다음 텍스트가있는 텍스트 상자를 생성합니다. undefinedparsererror - undefined

내 지오 코드 페이지에서 XML 파일을 만들고 대신 jQuery의 URL을 가리켜 그 대신 모든 것이 제대로 작동합니다.

도움 주셔서 감사합니다.

답변

0

아니라 contentType이를 보낼 수있는 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()); 
} 
그래서 누구나 다른 사람이 같은 문제에 대한 해결책을 찾고
1

geocode.aspx에서 Response.ContentTypetext/xml으로 설정했는지 확인하십시오.

0

내가 해결책을 찾기 위해 관리 한 검색보다 몇 시간 후 "txt/xml"

Response.ContentType="text/xml";