Как да заредите данни от mysql (php), преди мобилна страница на jquery да се покаже перфектно като родно приложение и без сривове?

Създавам приложение и използвам тези технологии: cordova, jquery mobile, Intel-XDK (Build: Crosswalk), Ajax и сървърни изпратени събития.

В XDK-емулатора всичко работи добре, но на устройството отнема твърде много време за зареждане на данни от mysql (php), преди да се покаже мобилната страница на jquery и понякога приложението се срива.

var $home = {
  
  load : function(){
      $.ajax({
        url: "http://xxxxxx.php",
        type: 'POST',
  //dataType: "jsonp",
  //crossDomain: true,
        beforeSend: function() {
        $showLoader.searching();
        },
        complete: function(){
        $showLoader.loadHidden();
        },
        async:true,
							
        data: {xxxxx : xxxxxxxx},
  
        sucess:function(r){
        $('#xxx').html(r);
        }
        
      });
    }
}

$(document).on("pagebeforeshow","#home",function(){
	$home.load();
});



Моите въпроси:

Трябва ли първо да заредя всички тези данни в локалната индексирана база данни, след което да работя с тях?
Какъв е вашият архитектурен дизайн? Как се справихте с този проблем?

Благодаря предварително.


person Hungry2Learn    schedule 19.09.2015    source източник


Отговори (1)


Здравейте, ще ви кажа лесен метод и ако зареждате данни от сървъра, използвайте JSon, а не Ajax. И все пак се сблъскате с някакъв проблем, тогава ми изпратете съобщение.

<script type="text/javascript">
    $(document).ready(function ()
                      {
                        var categoriesImgId = [];
                        var categoriesImg = [];

                        var getCategoriesId = localStorage.getItem('categoryIds');
                        $.getJSON("http://XYZ.php", function(data) {
                          $.each(data.YOUR ARRAYNAME, function(index, item) {

                            categoriesImgId.push(item.image_id);
                            categoriesImg.push(item.thumbimagepath);
                          }
                                );

                          for (i = 0; i < categoriesImgId.length; i++) {
                            var catListImgDiv = document.createElement('div');
                            catListImgDiv.setAttribute('id', "catListImgDiv" + i);
                            catListImgDiv.setAttribute('class', "pro_box");
                            catListImgDiv.setAttribute('onclick', 'getCatImgIdFunc(' + categoriesImgId[i] + ');');
                            $('#CatListImgDiv').append(catListImgDiv);

                            var categoryListImage = document.createElement('img');
                            categoryListImage.setAttribute('id', "categoryListImage" + i);
                            categoryListImage.src = "" + categoriesImg[i];
                            $('#catListImgDiv' + i).append(categoryListImage);
                          }
                        }
                                 );

                      }
                     );
  </script>
person KAUSHAL J. SATHWARA    schedule 19.09.2015
comment
Здравейте, но jQuery.getJSON() казва, че: Това е стенограма на Ajax функция, която е еквивалентна на ajax. Първо трябва да изпратя някои данни, за да проверя дали потребителят е регистриран или не. Моля, погледнете въпросите ми, благодаря за отговора. - person Hungry2Learn; 19.09.2015
comment
здравейте, значи трябва да публикувате данни ..? и искате пълен Ajax формат ..? - person KAUSHAL J. SATHWARA; 20.09.2015
comment
Да, и данните трябва да са там, преди страницата да се покаже като в собствено приложение. Емулаторът работи добре, но устройството не. Отнема твърде много време и се срива. Ако данните се съхраняват в localStorage, приложението работи по-бързо. Идеята ми е да създам indexeddb-база данни в Webworker, така че данните да могат да се изпращат чрез ServerSentEvents и да се съхраняват в тази indexeddb-база данни. Може би приложението може да бъде по-бързо от сега. Какво мислиш за това? - person Hungry2Learn; 20.09.2015