TOP

CakePHPでAjaxリクエストPOST時に$this->dataが空になる場合の確認箇所

2015-12-17 17:29:21

ajax側でprocessData: falseを設定しっぱなしになっててハマったのでちょいメモ

CakePHPに向けてajaxリクエストを送信する際、processData: falseのまま送信すると、$this->dataが空になる

※メモ:processData = trueにすると、dataに指定したデータをクエリ文字列に変換する

processData: trueを指定するか、デフォルトがtrueなので何も指定しないように変更

$.ajax({
    cache : false,
    url: postUrl,
    type: 'POST',
    data: postData,
    dataType: 'json',
    beforeSend: beforeSend,
    processData: true       // ←これ
})

しかし、フォームがmultipart/form-dataの場合は、processDatacontentTypeをfalseにしないといけないので、コピペでソース持ってきたりするとうっかり忘れやすい

$.ajax({
    cache : false,
    url: url,
    type: 'POST',
    data: postData,
    dataType: 'json',
    contentType: false,     // ←ここと
    processData: false,     // ←ここ
    beforeSend: beforeSend
})