2012-04-27 49 views
1
的C#webservice調用

因此,問題來了。我有三個網頁進行Web服務調用。我第一次登陸頁面並使其調用工作正常,但是如果我切換到第二頁,它會嘗試對錯誤的服務進行Web服務調用。這裏的一些信息:使用jQuery 1.7.1/eval/seq/

頁:

Page1.aspx - has Page1.js 
Page2.aspx - has Page2.js 

js文件:

Page1.js

var filterCriteria = ""; 

function GetList() { 
    $.ajax({ 
     type: "POST", 
     url: "/webServices/Page1.asmx/Page1List", 
     contentType: "application/json; charset=utf-8", 
     data: "{'letter':'" + filterCriteria + "'}", 
     dataType: "json", 
     success: function (result) { 
      DisplayList(result.d); 
     } 
    }); 
} 

function GetSearchResults() { 
    $.ajax({ 
     type: "POST", 
     url: "/webServices/Page1.asmx/Page1FilteredList", 
     contentType: "application/json; charset=utf-8", 
     data: "{'searchCriteria':'" + $("#Search").val() + "'}", 
     dataType: "json", 
     success: function (result) { 
      DisplayList(result.d); 
     } 
    }); 
} 

function DisplayList(object) { 
    var html = ''; 
    for (var i = 0; i < object.length; i++) { 
    //format results and append 
    } 
    if (object.length == 0) { 
     html += "<li class=\"filteredList\" style=\"padding: 10px;\">No Results Found</li>"; 
    } 
    $("#Page1List").html(html); 
} 

Page2.js

var filterCriteria = ""; 

function GetList() { 
    $.ajax({ 
     type: "POST", 
     url: "/webServices/Page2.asmx/Page2List", 
     contentType: "application/json; charset=utf-8", 
     data: "{'letter':'" + filterCriteria + "'}", 
     dataType: "json", 
     success: function (result) { 
      DisplayList(result.d); 
     } 
    }); 
} 

function GetSearchResults() { 
    $.ajax({ 
     type: "POST", 
     url: "/webServices/Page2.asmx/Page2FilteredList", 
     contentType: "application/json; charset=utf-8", 
     data: "{'searchCriteria':'" + $("#Search").val() + "'}", 
     dataType: "json", 
     success: function (result) { 
      DisplayList(result.d); 
     } 
    }); 
} 

function DisplayList(object) { 
    var html = ''; 
    for (var i = 0; i < object.length; i++) { 
    //format results and append  
    } 
    if (object.length == 0) { 
     html += "<li class=\"filteredList\" style=\"padding: 10px;\">No Results Found</li>"; 
    } 
    $("#Page2List").html(html); 
} 

因此,兩者都具有相同的調用和相同的信息,唯一真正的區別是結果不同,並且他們對不同的Web服務調用了獲取不同數據的不同Web服務。

現在每次我我之間切換時獲得一個新的js文件是

jQuery的1.7.1.min.js/EVAL/SEQ/1
jQuery的1.7.1.min.js/EVAL/SEQ/2
jQuery的1.7.1.min.js/EVAL/SEQ/3
jQuery的1.7.1.min.js/EVAL/SEQ/4

取決於有多少次,我切換回來。有沒有什麼辦法可以阻止eval,或者是我的代碼中有什麼東西可以導致jQuery存儲我正在使用的代碼的實例,以及我能做些什麼來解決它?

+1

我將乾涸你的代碼和參數的方法來接受URL作爲參數以及頁面1和2之間的其他內容是不同的。由於您在兩個js文件中都使用相同的方法名,所以當第二個JS文件加載到客戶端時,DOM正在獲取替換方法。 – tawman 2012-04-28 02:36:52

回答

1

所以問題是我從jquery移動加載頁面轉換。發生了什麼事情是,jQuery的手機追加新的頁面數據到DOM而不是強制頁面加載。這導致兩個JavaScript文件被同時加載,這意味着最後加載的js文件最後是主文件,並且因爲這兩個js文件都調用具有相同名稱的函數,所以它會多次加載它們。

分辨率
刪除$ .mobile.load()事件,並迫使click事件的路徑追加到URL

$("#GoPage1").on("click", function() { window.location = "/dir/Page1.aspx"; }); 
$("#GoPage2").on("click", function() { window.location = "/dir/Page2.aspx"; });