jQuery (.Mobile) не работает правильно в браузере Android - PullRequest
1 голос
/ 12 марта 2012

jQuery code:

$.ajaxSetup({ cache: false });
$('#stid_status_msg').hide();
$('.SpeedTestId').blur(function(e) {
    e.preventDefault();
    var stid = $('.SpeedTestId').val();
    var postString = 'stid=' + stid;
/*  $.ajax({
        cache: false,
        url:"inc/check_stid.inc.php", 
        type:'POST',
        data:postString,
        success:function(msg) {
            $('#stid_status_msg').html(msg);
            $('#stid_status_msg').show();
        },
        error:function(error) {
            $('#stid_status_msg').html('<font color="red">Error submitting results!' + error + '</font>');
            $('#stid_status_msg').show();
        }
    });*/
    $.get("inc/check_stid.inc.php", { stid: stid }, function(msg) {
            $('#stid_status_msg').html(msg);
            $('#stid_status_msg').show();
    });
});

Метод $.ajax() с комментариями - это то, что я пытался изначально, но быстро обнаружил, что $.get() был лучшим методом для того, что я пытался сделать.Но независимо от того, какой метод я использую, код прекрасно работает в настольных браузерах (FF, IE, Chrome), но не завершается успешно в браузере Android.

Когда я использую $.ajax(), и я тестирую вБраузер Android сначала зависает на несколько секунд, а затем срабатывает обратный вызов ошибки, и я получаю:

Ошибка отправки результатов![объект] [объект]

Следует также отметить, что когда я включаю консоль Java в браузере Android, она не указывает на какие-либо ошибки с JS.

Так что мне приходит в голову, чтоскрипт не может найти / загрузить inc/check_stid.inc.php по какой-то причине.Но почему только в браузере Android?

Очевидно, я новичок в jQuery, и я ценю любую информацию, которую вы, ребята, можете предоставить.

Редактировать

Я установил FF на свой андроид, и код там тоже отлично работает.Все, с чем я сталкиваюсь, является специфическим для браузера Android.Очень странно!

1 Ответ

0 голосов
/ 12 марта 2012

Для обратного вызова error для запроса jQuery AJAX будут переданы следующие аргументы:

  1. jqXHR: объект XHR, связанный с запросом AJAX
  2. textStatus: сообщение об ошибке строки
  3. errorThrown: объект, содержащий информацию об ошибке

Вы пытаетесь вывести jqXHR, как если бы это была строка, а не объект (как есть).Чтобы получить содержательное сообщение об ошибке, попробуйте следующее:

    error:function(jqXHR, textStatus, errorThrown) {

        //only log the objects if the current browser has a console.log function
        if (typeof console == 'object' && typeof console.log == 'function') { console.log(jqXHR); console.log(errorThrown); }

        $('#stid_status_msg').html('<font color="red">Error submitting results!' + textStatus + '</font>').show();
    }

Документы для $.ajax(): http://api.jquery.com/jquery.ajax/

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