1

所以这就是问题所在。我有三个页面可以进行 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 存储我正在使用的代码的 eval,我能做些什么来解决它?

4

1 回答 1

1

所以问题是我正在从 jquery mobile 加载页面转换。发生的事情是 jquery mobile 将新页面数据附加到 DOM 而不是强制页面加载。这导致两个 javascript 文件同时加载,这意味着最后加载的 js 文件是主文件,并且因为两个 js 文件都调用同名的函数,所以会多次加载它们。

解决
方法移除 $.mobile.load() 事件并强制点击事件将路径名附加到 url

$("#GoPage1").on("click", function () { window.location = "/dir/Page1.aspx"; });
$("#GoPage2").on("click", function () { window.location = "/dir/Page2.aspx"; });
于 2012-04-29T00:14:17.410 回答