jQuery: ajax メソッドのヘッダーを変更する

jQuery 1.5 以降であれば headers プロパティでヘッダーを指定することができる。

$.ajax({
  url: '/test',
  type: 'PUT',
  headers: {
    'X-HTTP-Method-Override': 'PUT',
    'Content-Type': 'application/json'
  },
  dataType: 'json',
  data: '{"test": "テスト"}',
}).done(function() {
    console.log('成功');
});

Content-Type のために contentType プロパティも用意されている。複数のヘッダーを指定する場合は、headers プロパティにまとめておいたほうが散らからずにすむだろう。

headers: {
  'X-HTTP-Method-Override': 'PUT',
},
contentType: 'application/json'

jQuery 1.4 までは beforeSend メソッドを定義し、xhr オブジェクトに直接アクセスする必要があった。

$.ajax({
    url: '/test',
    type: 'PUT',
    beforeSend: function(xhr) {
        xhr.setRequestHeader('X-HTTP-Method-Override', 'PUT');
    }contentType: 'application/json',
    dataType: 'json',
    data: '{"test": "テスト"}',
}).done(function() {
    console.log('成功');
});