2011-01-31 122 views
3

我們的一位工程師剛將他的iPad帶到了我的面前,並顯示了一個功能在我們的網站上不起作用。這適用於Chrome和Firefox,但不適用於iPhone或iPad。這是3個選擇框,當你點擊第一個值時,它會運行ajax並填充第二個選擇框。jQuery ajax不能在iOS中工作

這是在iOS中不起作用的功能。

我們對從哪裏開始測試這個有點難。任何人都可以提供一些關於從哪裏開始調試的建議,或者你能看到我們做錯了什麼嗎?

$().ready(function() { 
     $('.vehicle-search .make').bind('click', function (e) { 
      var makeId = $(e.target).val(); 
      var container = $(e.target).parent('.vehicle-search'); 
      if (parseInt(makeId) > 0) { 
       $.ajax({ 
        url: site.internal.url + '/lib/ajax/vehicle/make/getModelList.php', 
        type: 'post', 
        dataType: 'json', 
        success: function (r) { 
         if (r.length > 0) { 
          $('.vehicle-search > .model').html(''); 
          $('.vehicle-search > .year').html(''); 

          var html = ''; 
          for (var i = 0; i < r.length; i++) { 
           html += "<option value='"+r[i].id+"'>"+r[i].name+"</option>"; 
          } 

          $('.vehicle-search > .model').html(html); 
         } else { 
          alert('We did not find any models for this make'); 
         } 
        }, 
        error: function() { 
         alert('Unable to process your request, ajax file not found'); 
         return false; 
        }, 
        data: { 
         makeId: makeId 
         } 
       }); 
      } else { 
       $('.vehicle-search > .model').html(''); 
       $('.vehicle-search > .year').html(''); 
      } 
     }); 
........ 
+0

您是否試過Safari/Windows? – Pointy 2011-01-31 16:42:11

+2

另外,究竟是哪裏出了問題? – Pointy 2011-01-31 16:42:48

回答

8

綁定到change事件<select>的,而不是click事件。

另外,你應該爲enable the Developer Console爲iPad,這樣你可以看到任何JS錯誤,可能會或可能不會發生。

將來,將事件處理程序中的console.log語句作爲完整性檢查來查看它們是否被調用,以及它們是否要確定它們在什麼時候失敗。

1

我不知道什麼是錯的,但一般來說,這裏是你可以用Mobile Safari和IE做的事情,它沒有手動調試控制檯。

  1. 添加一些alert()到您的代碼至少找出腳本停止的時間。
  2. 您事件處理程序不會收到任何變量,但rsuccess(r)。看看文檔,你會發現你可以探測的變量或alert(),這可以幫助你真正發生的事情。特別是error()處理程序。
  3. compete()處理程序將在Ajax成功失敗時執行。試着去捕捉變量。
0

問題是緩存。添加這行代碼,問題應該解決。

$.ajaxSetup({ cache: false });