簡體   English   中英

jQuery ajax無法在iOS中運行

[英]jQuery ajax not working in iOS

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

這是在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('');
            }
        });
........

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

此外,您應該啟用 iPad 的開發者控制台 ,以便您可以看到可能發生或可能不發生的任何JS錯誤。

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

我不知道出了什么問題,但總的來說,這就是你可以用Mobile Safari和IE做的,沒有手動調試控制台。

  1. 在代碼中添加一些alert()以至少找出腳本何時停止。
  2. 除了r success(r)之外,事件處理程序不會收到任何變量。 查看文檔,您將找到可以探測或alert()變量alert() ,它們可以幫助您實現真正的目標。 特別是error()處理程序。
  3. 只要ajax成功失敗,competition compete()處理程序就會執行。 嘗試捕捉變量。

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

$.ajaxSetup({ cache: false });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM