2015-02-05 124 views
1

我有兩個幾乎相同的JQuery請求,我在頁面加載後發出,第一個請求json當前路徑,第二個請求不同的網址。不過,我很驚訝地看到,第一個請求typetext/html,第二個是application/json。我本來預計都是application/json。該請求是這個樣子:Ajax請求到當前路徑請求`text/html`而不是`application/json`

$.ajax({ 
    url: window.location.pathname, 
    type: 'GET', 
    dataType: 'json', 
    success: doSomething 
}); 

$.ajax({ 
    url: '/tags', 
    type: 'GET', 
    dataType: 'json', 
    success: doSomethingElse 
}); 

然而,在網絡中標籤我看到:

enter image description here

我缺少什麼?

回答

2

dataType: 'json'主要有兩個作用:

  1. 它會導致jQuery來忽略內容類型的文檔從服務器回來並且將其設置一個Accept頭當作JSON無論
  2. (請求HTTP內容協商)JSON

服務器可能使用HTTP content negotiation決定放什麼反應,如果它有不同的表述內容格式不同。大多數服務器不。

它看起來像你的沒有。它將始終爲第一個URL返回HTML,並始終爲第二個URL返回JSON。

如果您希望服務器關注Accept頭,那麼您必須對其進行配置(以及提供文檔的JSON版本以及HTML版本)。

+0

感謝您的回答。它看起來像是軌道的一部分,並沒有達到我期望的水平。 – lobati 2015-02-06 15:15:07

1

顯示的內容類型是服務器向您發送的響應類型,而不是您發送到服務器的請求類型。