「admin-ajax.php」でエラーが発生します。
-
Ajax通信によりファイルをダウンロードできるようプラグインのカスタマイズを行いました。
実行してみると「the server responded with a status of 500()」と表示されてしまいます。(画像挿入できないため、詳細は各リンク先を参照して下さい)
https://drive.google.com/file/d/1UeMUaZYthF9mBosR8qZXjGAz4Wf13NFR/view?usp=share_link
https://drive.google.com/file/d/1MSUa5Bp-B9ltK_3qgXRtp-h00Sk3kEsp/view?usp=share_link
// POSTメソッドで送信するデータ var params = { action: 'reservations_get', type: type, calendar_id: $('#calendar-ID').val(), start_date: $('#reservations-start-date').val(), end_date: $('#reservations-end-date').val(), start_hour: $('#reservations-start-hour').val(), end_hour: $('#reservations-end-hour').val(), status_pending: $('#reservations-pending').is(':checked') ? true : false, status_approved: $('#reservations-approved').is(':checked') ? true : false, status_rejected: $('#reservations-rejected').is(':checked') ? true : false, status_canceled: $('#reservations-canceled').is(':checked') ? true : false, status_expired: $('#reservations-expired').is(':checked') ? true : false, payment_methods: paymentMethods.join(','), search: $('#reservations-search').val(), search_by: $('#reservations-search-by').val(), page: $('#reservations-page').val(), per_page: $('#reservations-per-page').val(), order: $('#reservations-order').val(), order_by: $('#reservations-order-by').val() }; // Excelではない場合 if (0 !== type.indexOf('excel')) { this.ajaxRequestInProgress = $.post(ajaxurl, params, function (data) { data = $.trim(data); BackEndReservations.download(type, data); BackEnd.toggleMessages('none', ''); }); // Excelの場合はAJAX通信(POSTメソッド)を行う } else { // JavaScriptがサーバーにHTTPリクエストを送るために、XMLHttpRequestオブジェクトのインスタンスを作成 var xhr = new XMLHttpRequest(); // openメソッドでリクエストの初期化 xhr.open('POST', ajaxurl, true); // ContentTypeヘッダとしてapplication/x-www-form-urlencoded;charset=UTF-8を指定する(サーバに対して解析方法の指定) xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // sendメソッドの引数にリクエスト内容を指定(←ここでエラー発生) xhr.send($.param(params)); // blob型(Binary Large OBject:データベースシステムで用いられるデータ型のひとつ)でバイナリーデータを受信 xhr.responseType = 'blob'; xhr.onload = function (oEvent) { // ダウンロード完了後の処理を定義する var blob = xhr.response; // WordPress自体かPluginの最初の方の処理で先頭に余計な改行コードが出力している(Excelとして読み込めなくなる)。 // 影響を最小で抑えるために、妥協策ではあるが、JS上でその改行コードを削除する。 // Blob.slice():一部のデータを切り取る blob = blob.slice(5);//5番目 var filename = 'reservations.xlsx' // Blobオブジェクトをファイルに保存する(IE/EdgeではmsSaveBlobメソッド) if (window.navigator.msSaveBlob) { window.navigator.msSaveBlob(blob, filename); // それ以外のブラウザ } else { // Blobオブジェクトを指すURLオブジェクトを作る // 「Firefox:window.URL.createObjectURL()」と「chrome:window.webkitURL.createObjectURL()」の両方に対応 var downloadUrl = (window.URL || window.webkitURL).createObjectURL(blob); // リンク(<a>要素)を生成し、JavaScriptからクリックする var link = document.createElement('a'); document.body.appendChild(link); // Firefox対策(DOMに実際に追加しないとclickイベントが発火しない) link.setAttribute('type', 'hidden'); link.href = downloadUrl; link.download = filename; link.click(); // オブジェクトURLを使い終わったらファイルへの参照をこれ以上保持しないようにブラウザーに知らせる // ※revokeObjectURL()は、引数で与えられた文字列(オブジェクトURL)と一致するものを検索して、Blob URLストア内から削除します。 (window.URL || window.webkitURL).revokeObjectURL(downloadUrl); } BackEnd.toggleMessages('none', ''); // DL中のローディングを消す }; }
上記が作成したコードですが、ファイル「admin-ajax.php」へのアクセスがブロックされてしまわないようにするにはどうすればよろしいでしょうか。
皆さんのアドバイスをお待ちしております。
5件の返信を表示中 - 1 - 5件目 (全5件中)
5件の返信を表示中 - 1 - 5件目 (全5件中)
- トピック「「admin-ajax.php」でエラーが発生します。」には新たに返信することはできません。