JQuery мобильный запрос ajax не работает после 4-5 запросов в Android - PullRequest
1 голос
/ 02 апреля 2012

Я занимаюсь разработкой приложения с использованием jQuery mobile 1.1.0 RC1 и phonegap 1.5.0

У меня есть одна HTML-страница, которая содержит все страницы в ней как div (через data-role = "page")

вот мой код

<!DOCTYPE HTML>
<html>
<head>
<title>Index Page</title>

<!-- Adding viewport -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- Adding Phonegap scripts -->
<script type="text/javascript" charset="utf-8"
src="cordova/cordova-1.5.0.js"></script>

<!-- Adding jQuery mobile and jQuery scripts & CSS -->
<script type="text/javascript" src="jquery/jquery-1.7.1.min.js"></script>
<link rel="stylesheet"
href="jquerymobile/jquery.mobile-1.1.0-rc.1.min.css" />
<script type="text/javascript" src="jquery/jquery.validate.min.js"></script>
<script type="text/javascript"
src="jquerymobile/jquery.mobile-1.1.0-rc.1.min.js"></script>
<link rel="stylesheet" href="css/colors.css">

<script type="text/javascript">

function page1(){
    $.mobile.changePage("#page2", {
        transition : "slide"
    });
}

function page2(){
    $.mobile.changePage("#page1", {
        transition : "slide"
    });
}
$("#page1").live("pageshow", function(e) {
    $.ajax({
        type : 'GET',
        cache : false,
        url : "http://192.168.1.198:9051/something.xml"
                + "?time=" + Date.now(),
        data : {
            key : "value"
        },
        dataType : "xml",
        success : function(xml) {
            console.log("Success Page1");
        },
        error : function(xhr) {

        }
    });
});

$("#page2").live("pageshow", function(e) {
    $.ajax({
        type : 'GET',
        cache : false,
        url : "http://192.168.1.198:9051/something.xml"
                + "?time=" + Date.now(),
        data : {
            key : "value"
        },
        dataType : "xml",
        success : function(xml) {
            console.log("Success Page2");
        },
        error : function(xhr) {

        }
    });
});
</script>
<body>
<div data-role="page" id="page1">
    <div data-role="header">Page 1</div>
    <div data-role="content">
        <input type="text" name="page1GetTime" id="page1GetTime" value="" /><a
            href="#" data-role="button" onclick="page1()" id="gotopage2"> Go to Page 2 </a>
    </div>
</div>
<div data-role="page" id="page2">
    <div data-role="header">Page 2</div>
    <div data-role="content">
        <input type="text" name="page2GetTime" id="page2GetTime" value=""  /><a
            href="#" data-role="button" onclick="page2()"  id="gotopage1">Go to Page 1</a>
    </div>
</div>
</body>

Теперь, когда я нажимаю" Перейти на страницу2 ", страница2 будет отображаться вместе с одним запросом ajax. Если я продолжу переходить от одногостраница к другому, затем выполняется запрос ajax. Этот запрос перестает отвечать после 4-5 запросов ... Почему это происходит?

Ответы [ 4 ]

1 голос
/ 03 апреля 2012

Я разобрался. В Phonegap 1.5.0 есть ошибка. Чтобы исправить это, нам нужно либо перейти на phonegap 1.4.1, либо перейти на phonegap 1.6.0rc1

.
1 голос
/ 03 апреля 2012

Если ваши страницы становятся настолько тяжелыми, что ajax запрашивает тайм-аут или перестает работать, вы можете разделить их на разные фактические страницы.Если они по-прежнему работают плохо, вы можете легко отключить ajax, чтобы проверить, является ли это проблемой.

data-ajax="false"

Кроме того, это ограничение изменяется с одного мобильного устройства на другое или включенонастольный браузер?Поскольку ваш «аякс» перестает отвечать на «4 или 5», это заставляет меня думать, что это проблема с памятью.

0 голосов
/ 05 апреля 2012

Да, я тоже столкнулся с этой проблемой. Проблема в кордове-1.5.0.js. Если эта библиотека включена, jquery ajax потерпит неудачу при повторном входе на страницу ajax и использовании ajax. И это нормально в phonegap 1.4 или не включает cordova-1.5.0.js в phonegap 1.5

0 голосов
/ 03 апреля 2012

Попробуйте добавить data-ajax = "false" rel = "external" к своим ссылкам, чтобы отключить подкачку ajax. Я обнаружил, что это всегда вызывает проблемы с PhoneGap.

...