2012-04-27 25 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"; });