今天使用Ruby on Rails 去做AJAX 的呼叫
AJAX的Javascript那裡只是一個簡單的json轉值呼叫而已
$.post('/website_setting/step05', { json: json_string },
function(data){
alert(data);
}
);
但試了好久一直沒有成功!
後來檢查了幾個地方:
1. AJAX 路徑是否正確
2. ROR的 route 是否有設定
後來我透過Ruby on Rails的 development.log 去除錯,
看到了這段
Started POST “/website_setting/step05” for 127.0.0.1 at 2013-09-07 02:14:22 +0800
Processing by WebsiteSettingController#step05_update as */*
Parameters: {“json”=>”{\”0\”:\”關於我們\”}”}
Can’t verify CSRF token authenticity
Completed 422 Unprocessable Entity in 1ms
發現剛剛的1,2都是正確的
問題出在 “Can’t verify CSRF token authenticity”
後來找了資料後發現只要加上這段就可以了
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});
還有要注意到在layout裡面要有這段語法 <%= csrf_meta_tags %>
這樣,上面那段js語法才可以取到值