Jquery ajax не работает на iPhone и Android - PullRequest
2 голосов
/ 07 апреля 2011

Я создаю веб-приложение для мобильных устройств (особенно для iPhone и Android). Я строю его с использованием ASP.NET MVC и JQuery. На одной странице у меня есть каскадный выпадающий список. Я подключил функцию к событию change для первого раскрывающегося списка, которая выполняет вызов AJAX и использует ответ JSON для заполнения второго раскрывающегося списка. Все это прекрасно работает на моем рабочем столе, но не работает с телефона iPhone или Android. Второй выпадающий список не заполнен. Я поместил «предупреждение» в функцию изменения, и она проверила, что событие инициируется. Затем я поместил «alert» в функцию обратного вызова для вызова AJAX, и он не был выполнен, поэтому либо вызов AJAX не поступает на сервер, либо ответ не принимается телефоном.

Код 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>');
                    }
                });
            });
    });
});

Я включил консоль JavaScript на iPhone, но она не показывает никаких ошибок. Будучи новичком в разработке для мобильных устройств, я не уверен, как мне следует отлаживать это. На рабочем столе я бы просто использовал Fiddler, чтобы увидеть, что происходит на проводе. Любая помощь очень ценится.

Приветствия

Craig

1 Ответ

5 голосов
/ 08 апреля 2011

Я решил проблему и просто публикую ее на тот случай, если другие столкнутся с такой же проблемой. Все сводится к тому, что я делаю то, что ненавижу, и это жестко закодированные строки. В этом случае ошибочной строкой является URL AJAX в функции hte post. Он жестко запрограммирован в корне сайта, но при развертывании (как я тестировал его на мобильном устройстве) путь изменился.

ТАК, чтобы исправить это, я заменил строку поста выше:

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

Url.Content обеспечивает использование правильного относительного пути для URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...