所以这就是问题所在。我有三个页面可以进行Web服务调用。我第一次登陆页面并进行调用它工作正常,但是如果我切换到第二页,它会尝试对错误的服务进行Web服务调用。以下是一些信息:
的网页:
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存储我正在使用的代码的evals以及我该怎么做才能解决它?
答案 0 :(得分:1)
所以问题是我正在从jquery mobile加载页面转换。发生的事情是jquery mobile将新页面数据附加到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"; });