2016-08-10 70 views
2

我在對REST API進行Ajax調用時遇到了IE9中的問題。 在IE 9中,我沒有得到成功響應,而在所有其他瀏覽器中,它工作正常,我在Chrome,FF(甚至在IE 10 & 11)中獲得成功響應。 我在IE 9中將錯誤響應視爲「拒絕訪問」,並在控制檯中顯示HTML1300:導航發生。 此外,這個ajax調用是從http到https。IE 9問題:在Ajax調用中沒有獲得成功響應

我嘗試使用jsonp,但API不返回jsonp響應。 注意:這是一個簡單的應用程序,不涉及後端。

以下是我的Ajax代碼。

$.ajax({ 
     type: 'GET', 
     url: 'https://myurl to REST API/', 
     dataType: 'json', 
     contentType: "application/json, 
     data: { 
      'select': "sum(message_count)", 
      'timeRange': timeInterval 
     }, 
     headers: { 
      "Authorization": "Basic " + btoa(AppFramework.constants.USER_NAME + ":" + AppFramework.constants.PASSWORD) 
     }, 
     success: function(result) { 
      AppFramework.messageCcount = result.environments[0].metrics[0].values[0]; 
      console.log(AppFramework.messageCcount); 
     }, 
      error: function(xhr, status, error) { 
      alert(error); 
    } 
    }); 

任何幫助appriciated

回答

0

我不知道你爲什麼問IE9的問題,但現在仍然會在這裏提供的答案。

嘗試在您的AJAX請求中將緩存屬性設置爲false。老版本的IE有時候會緩存所有的AJAX請求,並且不允許瀏覽器使用更新後的結果。您可以使用一個或所有以下的解決此問題:

  1. 更改類型從GETPost
  2. 嘗試緩存預防 - 嘗試在你的URL的末尾到動態串(當前的時間,如果可能的話)追加請求。這將使您的所有請求唯一&將阻止瀏覽器使用緩存的響應。
  3. 在您的響應標題中,嘗試添加"Cache-Control","no-cache,no-store"以明確告訴瀏覽器禁用此請求的緩存。
  4. 禁用緩存y只需在您的AJAX調用中添加「cache:false」即可。