2016-06-29 22 views
0
  • ASP.NET MVC 5
  • jQueryの長い記事のための1.11.3

謝罪内全体のビューをレンダリングするが、私は本当に私のように右方向にナッジを必要とします問題が何であるかは分かりません。Internet Explorerは、部分更新

以下はChrome、Firefox、IEでは完璧に動作しますが、IEではそうではありません。次のように間違った結果がIE 11でただし

enter image description here

enter image description here

やっていくつかのJavaScriptがある皮膚の下

正しい結果は次のようになりますMVCコントローラへのAJAXコールバックによる更新:

//Applies the selected filter from the values selected in the drop down 
function ApplyFilter() { 
    var brandSelected = $('#filterBrand').val(); 
    var cruiseLengthSelected = $('#filterCruiseLength').val(); 
    var departureDateSelected = $('#filterDepartureDate').val(); 
    var departureFromSelected = $('#filterDepartFrom').val(); 
    var regionSelected = $('#filterRegion').val(); 
    var shipSelected = $('#filterShip').val(); 

    cruisesTemplate.UiBlock('.entire-page'); 
    cruisesTemplate.UiSetBusy('.entire-page'); 

    $.ajax({ 
     url: '/cruises/currentcruiselistfilterset?' + 
      'aBrandId=' + 
      brandSelected + 
      '&aCruiseLength=' + 
      cruiseLengthSelected + 
      '&aDepartureDate=' + 
      departureDateSelected.replace(' ', '_') + 
      '&aRegionHierarchyItemId=' + 
      regionSelected + 
      '&aDepartureFromHierarchyItemId=' + 
      departureFromSelected + 
      '&aShipId=' + 
      shipSelected 
    }) 
     .error(function (xhr, status, error) { 
      cruisesTemplate.UiClearBlock('.entire-page'); 
      cruisesTemplate.UiClearBusy('.entire-page'); 
     }) 
     .success(function (data) { 
      $.ajax({ 
       dataType: 'html', 
       type: 'GET', 
       url: window.location.href 
      }) 
       .error(function (xhr, status, error) { 
        cruisesTemplate.UiClearBlock('.entire-page'); 
        cruisesTemplate.UiClearBusy('.entire-page'); 
       }) 
       .success(function (data) { 
        $('#results').html(data); 

        //Now refresh the filter bar 
        $.ajax({ 
         dataType: 'html', 
         type: 'GET', 
         url: '/cruises/filterbarrefresh' 
        }) 
         .error(function (xhr, status, error) { 
          cruisesTemplate.UiClearBlock('.entire-page'); 
          cruisesTemplate.UiClearBusy('.entire-page'); 
         }) 
         .success(function (data) { 
          $('#filter-bar').html(data); 
          cruisesTemplate.UiClearBlock('.entire-page'); 
          cruisesTemplate.UiClearBusy('.entire-page'); 
         }); 
       }); 
     }); 
} 

私が考えることができるのはタイミング問題(ありそうもありません)またはおそらくはurl:window.location.href(おそらく)と関連したタイミングの問題です。

EDIT:

https://localhost/cruises/filterbarrefresh https://localhost/departing/australia/cruises https://localhost/cruises/currentcruiselistfilterset?abrandid=8&acruiselength=0&adeparturedate=january_2015&aregionhierarchyitemid=1&adeparturefromhierarchyitemid=73&ashipid=0:これは私は、次のAJAX要求を参照して動作し、ブラウザのように window.location.href問題です: 決定的URLが表示されていること

IEでは、このAJAXリクエスト(とフルサイトuそれは私たちが完全なページ要求を行っているとして、更新エリア内pdated:

https://localhost/departing/australia/cruises

を私はまた、これはdescribed hereとしてjQuery.html()の問題ではないことを確認しました。ダミーのハードコーディングされた文字列または$( "#container")を使用します。empty()。append(data);パターンは同じIEの悪い振る舞いにつながります。

/EDIT:

私の基本的な問題(複数可)は次のとおりです。

  • はどのようにして、既存のJSのロジックを変更することなく、IE(とChromeは、Firefoxなど)でこの作業を行うことができますか?
  • これは悪い習慣であることが実装されているという点で、jQuery、Promisesなどの面で何かが欠けていますか?

すべての参考にしていただきたいと思います。

+0

なぜ@ Url.Action()ではなく 'window.location.href'を使用していますか?最初の呼び出しで行っているようにURLを生成するのは悪い習慣です。あなたは 'url:@ Url.Action(" currentcruiselistfilterset "、" cruises ")を使用し、' data:{aBrandId:brandSelected、aCruiseLength:cruiseLengthSelectedなど} 'を使用してパラメータを送信する必要があります。 –

+0

@StephenMuecke悪い習慣と私はローカルで自分のコードを見直して更新します。しかし、IEが他のブラウザとはまったく異なる何かをしているという事実には何の違いもありません。なぜIEが何をやっているのか? – TheEdge

+0

IEで何か違うことに驚いています:)。とにかく、連鎖したアヤックスコールはどうしていますか?最初のものは 'currentcruiselistfilterset()'を呼び出していますが、何らかのデータが返ってきますが(htmlかjsonかどうかはわかりませんが)、そのデータは何もしません。成功したコールバックでは、DOMを更新するための 'location.href'(現在のページのURL)によって返されたURLにもう一度ajaxコールを行います。 –

答えて

1

ソリューションはここにjQueryのAJAXのキャッシュをオフにすることになったので呼び出します

$アヤックス({キャッシュ:偽;});

関連する問題