2012-04-27 12 views
1

を使用したC#webサービスの呼び出しここに問題があります。 Webサービスコールを行う3つのページがあります。私がページに着陸し、それがうまく動作するようにするのは初めてですが、2番目のページに切り替えると、間違ったサービスに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サービス呼び出しを行うことだけです。

は今、私は私を切り替えるたびに/

jQueryの-1.7.1.min.js/evalを/配列/ 1
jQueryの-1.7.1.min.js新しいJSファイルを取得します回数に応じて、evalを/配列/ 2
jQueryの-1.7.1.min.js/evalを/配列/ 3
jQueryの-1.7.1.min.js/evalを/配列/ 4

Iスイッチを前に戻す。 evalを停止する方法はありますか?または私のコードにjQueryが使用しているコードのevalsを格納する何かがありますか?それを解決するために何ができますか?

+1

をパス名を追加するためにクリックイベントを強制URLはパラメータとして、ページ1と2では異なるものがあります。両方のjsファイルで同じメソッド名を使用しているため、2番目のJSファイルがクライアントに読み込まれると、DOM取得メソッドが置き換えられます。 – tawman

答えて

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"; }); 
関連する問題