2011-04-07 138 views
2

我正在構建一款針對移動設備(特別是iPhone和Android)的Web應用程序。我使用ASP.NET MVC和JQuery構建它。在一頁上我有一個級聯下拉菜單。我已經爲第一個下拉菜單的change事件連接了一個函數,並且執行了AJAX調用,並使用JSON響應來填充第二個下拉菜單。這一切都可以在我的桌面上正常工作,但不適用於iPhone或Android手機。第二個下拉列表未填充。我在更改函數中放置了一個「警告」,並驗證事件正在被觸發。然後,我在AJAX調用的回調函數中放置了「alert」,但它沒有被執行,所以AJAX調用沒有打到服務器,或者電話沒有收到響應。Jquery ajax發佈不支持iPhone和Android

jQuery的代碼是:

$(function() { 
    $("#ProgramId").change(function() { 
     var programId = $("#ProgramId").attr("value"); 
     alert("Change event triggered"); // <- test only, does get executed when client is a phone bowser 
     var termId = $("#TermId").attr("value"); 
     $.post("/DealerHome/Terms", { "ProgramId": programId }, 
      function (data) { 
       alert("Ajax response received"); // <- test only, does NOT get executed when client is a phone bowser 
       $("#TermId").children().remove(); 
       $("#TermId").append('<option value="0">--select--</option>'); 
       $.each(data, function() { 
        if (termId == this.Value) { 
         $("#TermId").append('<option value="' + this.Value + '" selected >' + this.Text + '</option>'); 
        } else { 
         $("#TermId").append('<option value="' + this.Value + '" >' + this.Text + '</option>'); 
        } 
       }); 
      }); 
    }); 
}); 

我已經打開iPhone上的JavaScript控制檯,但它並沒有顯示出任何錯誤。作爲移動設備開發的新手,我不知道該如何調試。在桌面上,我只是使用Fiddler來查看電線上發生了什麼。任何幫助都非常感謝。

乾杯

克雷格

+0

只是繼續到上面,我已經確認服務器正在接收來自移動設備的ajax調用,並且正在返回JSON響應,所以它似乎是移動設備未處理響應的問題。 – Craig 2011-04-08 01:40:58

回答

5

我已經解決了這個問題,我只是張貼在其他情況下遇到了同樣的問題。這歸結於我做我討厭的事情,那是硬編碼的字符串。在這種情況下,違規行是hte post函數中的AJAX url。它被硬編碼到網站的根目錄,但是當被部署時(這是我在移動設備上測試它的方式),路徑改變了。

SO糾正這一點,我已經更換後線以上:

$.post('@Url.Content("~/DealerHome/Terms")' , { "ProgramId": programId }, 

Url.Content確保正確的相對路徑用於鏈接。