2012-06-06 3 views
0

Я использую jQueryMobile для создания приложения ipad. У меня есть следующий код:jquery mobile redirect не происходит

function coursesandmodules() 
      { 
       var companyDBName = "abc3"; 
       var studentId = "2"; 
       $.ajax({ 
         type : "GET", 
         url : "http://192.168.1.78:8087/teach/rest/student/getcoursesandmodules/" + companyDBName + "/" + studentId , 
         dataType : "json", 
         error: function(error) { 
         alert("ERROR"); 
         }, 
         success : function(data,text,xhqr) { 

         var divElement = "<div id='coursesandmodules' data-role='page'><header data-role='header'><h1>Courses and Modules</h1></header><ul data-role='listview'></ul></div>"; 
         $('#loginpage').after(divElement); 
         var jsonobj = eval(data); 
         for (i in jsonobj) { 
         var stringArray = separate(i); 
         var CTId = stringArray[0]; 
         var CTName = stringArray[1]; 

         var listDivider = "<li data-role='divider' data-theme='b'>" + CTName + "</li>"; 
         $('#coursesandmodules ul').append(listDivider); 
         for(j in jsonobj[i]) { 
         var myObj = JSON.stringify(jsonobj[i][j]); 
         var myJsonObj = eval('(' + myObj + ')'); 
         for (h in myJsonObj) { 
         var moduleId = h; 
         var moduleName = myJsonObj[h]; 
         var list = "<li><a href='#module"+ moduleId + "'>" + moduleName + "</a></li>"; 
         $('#coursesandmodules ul').append(list); 
         topics(moduleId, moduleName, companyDBName); 
         } 
         } 
         } 
         } 
         }); 
      } 

      function topics(moduleId, moduleName, companyDBName) 
      { 
       var id = "module" + moduleId; 
       var url = "http://192.168.1.78:8087/teach/rest/student/getmoduletopics/" + companyDBName + "/" + moduleId; 
       $.ajax({ 
         type : "GET", 
         url : url, 
         dataType : "json", 
         error : function(error) { 
         alert("ERROR"); 
         }, 
         success : function(data,text,xhqr) { 
         var jsonobj = eval(data); 
         var modulePage = "<div id='" + id + "' data-role='page'><header data-role='header'><h1>" + moduleName + "</h1><a href='#coursesandmodules'>Back</a><a href='#' onclick='savemodule(" + moduleId + ")'>Save</a></header></div>"; 
         $('#loginpage').after(modulePage); 
         for (i in jsonobj){ 
         var stringArray = separate(i); 
         var topicId = stringArray[0]; 
         var topicName = stringArray[1]; 
         var topicText = jsonobj[i]; 

         var topicCollapsible = "<div data-role='collapsible'><h1>" + topicName + "</h1>" + topicText + "</div>"; 
         $("#" + id).append(topicCollapsible); 
         } 
         } 

         }); 

      } 

      function separate(string) { 
       var str = string.substring(1,(string.length - 1)); 
       var stringArray = str.split("="); 
       return stringArray; 
      } 


      function submit() { 

       var username = $("#username").val(); 
       var password = $("#password").val(); 

       var url = "http://192.168.1.78:8087/teach/rest/student/authenticate?username=" + username + "&password="+ password; 

       $.ajax({ 
         type : "GET", 
         url : url, 
         dataType : "json", 
         error : function(error) { 
         navigator.notification.alert("Error connecting to webservice"); 
         }, 
         success : function(data,text,xhqr) { 
         if(data) { 
         var jsonobj = eval(data); 

         // student info 
         var currentModule = data.currentModule; 
         var studentId = data.studentId; 
         var studentUserId = data.studentUserId; 
         var companyDbName = data.companyDbName; 
         var studentName = data.studentName; 
         var userName = data.userName; 
         var companyId = data.companyId; 
         //save data 
         $.mobile.changePage('#coursesandmodules'); 
         } 
         else { 
         navigator.notification.alert("Incorrect username/password combination"); 
         } 

         } 

         }); 

      } 

Когда я вызываю функцию coursesandmodules в функции onDeviceRead() и отправить регистрационную форму, которая вызывает метод отправки, редирект работает. Но сейчас я жестко кодирую значения companyDBName и studentID, используемые в методе classesandmodules. Я пыталась дозвониться coursesandmodules() в методе представить и передавая значения оттуда что-то вроде:

coursesandmodules(companyDBName, studentID) 
$.mobile.changePage('#coursesandmodules'); 

И я удалил вызов cursesandmodules() из функции onDeviceRead(). Переадресация не работала. Он остался на странице входа

+0

Да, ОК. Сделаю. – jokham

ответ

0

В своем коде вы просто точка на якорь, то документы не упоминают об этом ничего:

docs

Это их примеры:

//transition to the "about us" page with a slideup transition 
$.mobile.changePage("about/us.html", { transition: "slideup"}); 

//transition to the "search results" page, using data from a form with an id of "search" 
$.mobile.changePage("searchresults.php", { 
    type: "post", 
    data: $("form#search").serialize() 
}); 

//transition to the "confirm" page with a "pop" transition without tracking it in history 
$.mobile.changePage("../alerts/confirm.html", { 
    transition: "pop", 
    reverse: false, 
    changeHash: false 
}); 
+0

Вы можете использовать якорь. У меня есть div с идентификатором именованного якоря и data-role = 'page'. С кодом выше перенаправление работает. Я предполагаю, что он не работает, потому что div и div div не созданы. Обратите внимание, что некоторые элементы добавляются в dom в первом методе. Поэтому, когда я вызываю этот метод сначала с помощью onDeviceReady, тогда отправьте форму, перенаправление работает. Если я вызываю его из submit() и удаляю его из onDeviveReady, он не работает – jokham