2011-08-24 71 views
0

我目前使用jTemplate和jQuery从Web服务获取机场数据并显示它。在一个页面上,它按预期工作,它工作得很好:jQuery Uncaught 5 AJAX呼叫

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> 

那么另一个页面,在这里我想获得相同的数据,但在那里我可以使用一个以上的AJAX调用模板等,我得到这个:

Uncaught 5

的代码几乎是相同的:

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和我检查了Web服务返回的数据等,这是:

enter image description here

我以前从未见过未捕获的5错误。它发生在所有浏览器中。我尝试拨打filter参数设置为filter: 'xxx'filter:''的服务拨打服务,但行为没有变化。这很奇怪,我不确定 - 没有更多的错误信息 - 如何解决它!?任何线索?

帮助赞赏。

+2

你说这是从不同的页面发生的网站上?也许模板'/templates/html/airports.htm?ck='+ cachekiller'的相对文件路径需要改变。你一直在使用'setTemplateURL()',所以我敢打赌这是一个URI问题。 – 65Fbef05

+0

不幸的是,它似乎并不是 - 我希望它是。这两个页面位于相同的目录:(但+1帮助;) – dooburt

+0

您是否尝试将'cache:false'添加到您的ajax参数?我不确定它会产生巨大的差异,但如果它是挂起的浏览器,则值得一试。 – 65Fbef05

回答

1

答案很简单,我浪费了太多时间。 叹息难道它不总是这样吗?

在模板中,我拨打了{toLower($T.Airport.Icao)}toLower不是新页面中的功能。一旦我添加了功能,一切都很好。 拍打头部

感谢65Fbef05的帮助:)

+0

我很高兴你能够追赶它。它通常是最简单的事情,对吗?大声笑 – 65Fbef05