2011-08-24 3 views
0

현재 웹 서비스에서 공항 데이터를 가져와 표시하려면 jTemplate 및 jQuery를 사용하고 있습니다. 한 페이지가 예상대로 작동하고 아주 잘 작동 :jQuery Unjaught 5 on AJAX call

function getData(pageSize, pageNumber, filter) { 
     if ($('#airportfilter').val() != 'Filter...') { 
      defaultParameters = "{pageSize:" + pageSize + ",pageNumber:" + pageNumber + ",filter:'" + filter + "'}"; 
     } 
     else { 
      defaultParameters = "{pageSize:" + pageSize + ",pageNumber:" + pageNumber + ",filter:''}"; 
     } 
     loader(true); 
     var cachekiller = Math.floor(Math.random() * 1000); 
     $.ajax({ 
      type: "POST", 
      url: "http://<%=Atomic.UI.Helpers.CurrentServer()%>/AtomicService/Cog.asmx/GetAirports", 
      data: defaultParameters, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: (function Success(data, status) { 
       $('#placeholder').setTemplateURL('/templates/html/airports.htm?ck=' + cachekiller, null, { filter_data: false }); 
       $('#placeholder').processTemplate(data.d[0]); 
       loader(false); 
       setPageNumber(pageSize); 
      }), 
      error: (function Error(request, status, error) { 
       $("#placeholder").html(request.statusText).fadeIn(1000); 
       loader(false); 
      }) 
     }); 
    } 

이 템플릿이다, 나는 동일한 데이터를 좀하고 싶습니다 다른 페이지에 따라서

<li style="overflow:auto;"> 
    <ol class="pager"> 
    {#for index = 1 to Math.ceil($T.TotalRecords/$T.PageSize)} 
     <a href="#" id="{$T.index}" class="pagethis"><li {#if $T.index == $T.PageNumber+1 } class="selected"{#/if}>{$T.index}</li></a> 
    {#/for} 
    </ol> 
</li> 
{#foreach $T.AirportList as Airport} 
<li class="airport-row"> 
    <div class="gowalla-avatar"> 
     <a href="/airport/airport.aspx?airport={toLower($T.Airport.Icao)}"> 
      <img src="{$T.Airport.GowallaImgSmall}" alt="{$T.Airport.AirportName}" title="{$T.Airport.AirportName}" width="100" height="100" border="0"></img> 
     </a> 
    </div> 
    <div class="gowalla-spot"> 
     <a class="gowalla-name" href="/airport/airport.aspx?airport={toLower($T.Airport.Icao)}">{$T.Airport.AirportName}&nbsp;({$T.Airport.Iata})</a> 
     <small> 
      <img src="/images/iconography/marker-tiny.png" alt="" class="padtop tinyicon"></img><a href="/city/city.aspx?city={$T.Airport.CityId}">{$T.Airport.City}</a>, <a href="/country/country.aspx?country={$T.Airport.CountryId}">{$T.Airport.Country}</a><br /> 
      <a href="#" id="flyfromhere">Fly from here &raquo;</a>&nbsp;|&nbsp;<a href="#" id="flytohere">Fly to here &raquo;</a> 
     </small> 

    </div> 
</li> 
{#/for} 
<li style="overflow:auto;"> 
    <ol class="pager"> 
    {#for index = 1 to Math.ceil($T.TotalRecords/$T.PageSize)} 
     <a href="#" id="{$T.index}" class="pagethis"><li {#if $T.index == $T.PageNumber+1 } class="selected"{#/if}>{$T.index}</li></a> 
    {#/for} 
    </ol> 
</li> 

하지만 어디

Uncaught 5

코드는 거의 동일

:

나는이 얻을 개 이상의 AJAX는 등 템플릿 호출을 사용할 수 있습니다 691,363,210
function getAirportData(pageSize, pageNumber, filter) { 
     defaultParameters = "{pageSize:" + pageSize + ",pageNumber:" + pageNumber + ",filter:''}"; 
     airportLoader(true); 
     var cachekiller = Math.floor(Math.random() * 1000); 
     $.ajax({ 
      type: "POST", 
      url: "http://<%=Atomic.UI.Helpers.CurrentServer()%>/AtomicService/Cog.asmx/GetAirports", 
      data: defaultParameters, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: (function Success(data, status) { 
       $('#airports-placeholder').setTemplateURL('/templates/html/airports.htm?ck=' + cachekiller, null, { filter_data: false }); 
       $('#airports-placeholder').processTemplate(data.d[0]); 
       airportLoader(false); 
       //setPageNumber(pageSize); 
      }), 
      error: (function Error(request, status, error) { 
       $("#airports-placeholder").html(request.statusText).fadeIn(1000); 
       airportLoader(false); 
      }) 
     }); 
    } 

그것은 같은 jTemplate를 사용하고 내가 확인 한 웹 서비스는 등등 데이터를 반환 :

enter image description here

내가 전에 포착되지 않은 5 오류를 본 적이 없습니다. 모든 브라우저에서 발생합니다. filter 매개 변수를 filter: 'xxx'filter:''으로 설정하고 동작을 변경하지 않고 서비스 호출을 시도했습니다. 그것은 매우 이상하고 나는 확신하지 못합니다 - 오류에 대한 더 많은 정보없이 - 어떻게 해결할 것인가? 모든 단서?

감사합니다.

+2

당신은이 사이트의 다른 페이지에서 무슨 일이 일어나고 말? 템플릿'/templates/html/airports.htm?ck= '+ cachekiller'의 상대 파일 경로가 변경되어야 할 수도 있습니다. 당신은'setTemplateURL()'에 그것을 모든 방법으로 만들고 있습니다, 그래서 나는 그것이 URI 문제라고 내기를 기꺼이합니다. – 65Fbef05

+0

불행히도, 그럴 것 같지 않습니다 - 나는 그것이 좋겠다고 생각합니다. 두 페이지는 같은 디렉토리에 있습니다. (그러나 +1 도움말) – dooburt

+0

ajax 매개 변수에'cache : false'를 추가하려고 시도 했습니까? 큰 차이를 만들지는 모르겠지만 전화를 끊으면 브라우저가 좋을 것 같습니다. – 65Fbef05

답변

1

이것에 대한 답변은 엄청나게 간단했고 나는 너무 오래 낭비했습니다. 한숨 언제나 그런가요?

템플릿 내에서 {toLower($T.Airport.Icao)}을 호출했습니다. toLower은 새 페이지의 기능이 아닙니다. 일단 내가 함수를 추가하면 모든 것이 잘되었다. 때려은 도움을 65Fbef05에

감사를 머리 :

+0

당신이 그것을 추격 할 수있어서 기쁩니다. 종종 가장 간단한 일입니다. 맞죠? 권자 – 65Fbef05