###前提・実現したいこと
・Cakephp3
・Amazon EC2
リアルタイムに情報を更新するページを作成しています。
AjaxでcakephpのアクションのURLを指定し、DB処理を行います。
何かしらの変更後(どこが原因かわかりません。記憶を頼りに出来る限り戻しましたが治りませんでした)から(update-holiday)アクションで404になってしまいます。
変更前は期待通りの動作をしていました。
###エラーが出る前に変更した点
jsに追加
$('#description'+id).prop('disabled', false);
アクションに追加
$holiday->description = $this->request->data('description');
また、php.iniにてファイルのMAXアップロード容量を100Mまで引き上げました。
###発生している問題・エラーメッセージ
POST 404エラー
ChromeConsole
POST https://XXX/update-holiday 404 () edit_holiday.js:103 XMLHttpRequest : 404 edit_holiday.js:104 textStatus : error edit_holiday.js:105 errorThrown :
EC2、Apacheのaccess_log
172.31.13.0 - - [13/Jul/2017:10:23:22 +0900] "POST XXX/update-client HTTP/1.1" 404 211287 "XXX/setting" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
###該当のソースコード
javascript
1('.ok').click(function(){ 2 id = $(this).val(); 3 4 $('#ok'+id).prop('disabled', true); 5 $('#stop'+id).prop('disabled', true); 6 7 $('#description'+id).prop('disabled', true); 8 $('#start-date'+id).prop('disabled', true); 9 $('#start-time'+id).prop('disabled', true); 10 $('#end-date'+id).prop('disabled', true); 11 $('#end-time'+id).prop('disabled', true); 12 13 $.ajax({ 14 type: 'POST', 15 url: 'https://XXX/update-holiday', 16 data: { 17 id: parseInt($('#id'+id).text()), 18 description: $('#description'+id).val(), 19 start_date: $('#start-date'+id).val(), 20 start_time: $('#start-time'+id).val(), 21 end_date: $('#end-date'+id).val(), 22 end_time: $('#end-time'+id).val(), 23 deleted: 0, 24 } 25 }).done(function(data, textStatus, jqXHR){ 26 $('#edit'+id).show(); 27 $('#delete'+id).show(); 28 $('#ok'+id).hide(); 29 $('#stop'+id).hide(); 30 31 $('#ok'+id).prop('disabled', false); 32 $('#stop'+id).prop('disabled', false); 33 34 $('tr#tr'+id).removeClass('info'); 35 }).fail(function(jqXHR, textStatus, errorThrown){ 36 console.log("XMLHttpRequest : " + jqXHR.status); 37 console.log("textStatus : " + textStatus); 38 console.log("errorThrown : " + errorThrown); 39 40 $('#ok'+id).prop('disabled', false); 41 $('#stop'+id).prop('disabled', false); 42 43 $('#description'+id).prop('disabled', false); 44 $('#start-date'+id).prop('disabled', false); 45 $('#start-time'+id).prop('disabled', false); 46 $('#end-date'+id).prop('disabled', false); 47 $('#end-time'+id).prop('disabled', false); 48 }); 49 });
###試したこと
- ほぼ同じコード(HTMLのid等を変更)の別のアクション(update-client)にあるjsでは正常にアクセスできています。
- (update-client)のjsのURLを(update-holiday)にすると404になりません(つまりURLはあっている)。
- 正常に動作している、(update-client)のjsのファイルをコピーして(update-holiday)のページで動作させると同じく404エラーになります。
- エラーが出る前に変更した点をコメントアウト(php.iniはもとの数値を覚えていません)
###補足
- jsファイルのアクセス権限はともに-rw-r--r--です。
- どちらのアクション(update-client)、(update-holiday)でも
$this->viewBuilder()->layout(''); $this->autoRender = false;
を宣言しており、ctpファイル(空)のアクセス権限はともに-rw-r--r--です。
原因や怪しい点などございましたらご教示願います。
###追記
logs/debug.log
2017-07-13 12:21:59 Debug: duration=0 rows=0 SELECT Holidays.id AS `Holidays__id`, Holidays.description AS `Holidays__description`, Holidays.start_date AS `Holidays__start_date`, Holidays.start_time AS `Holidays__start_time`, Holidays.end_date AS `Holidays__end_date`, Holidays.end_time AS `Holidays__end_time`, Holidays.deleted AS `Holidays__deleted` FROM holidays Holidays WHERE Holidays.id = 0 LIMIT 1
回答1件
あなたの回答
tips
プレビュー