1/** 2 * ajax颿°ãã¾ã¨ãããã¡ã¤ã« 3 * ajax.js 4 */ 5 6 7/** 8 * ajaxå¦çï¼JSONå½¢å¼ã§POSTï¼ 9 * 第ï¼å¼æ°ï¼POSTããURLï¼ãæååã 10 * 第ï¼å¼æ°ï¼POSTãããã¼ã¿ï¼ãé åã 11 * 第ï¼å¼æ°ï¼ã³ã¼ã«ããã¯é¢æ°ï¼ããªãã¸ã§ã¯ãåã 12 * â»ajaxéä¿¡æåå¾ã«å®æ½ãããå¦ç 13 * 第ï¼å¼æ°ï¼ã³ã¼ã«ããã¯é¢æ°ã«æ¸¡ããã©ã¡ã¼ã¿ï¼ãé åã 14 */ 15const ajax = async function (url, request, callback = null, param = null) { 16 await fetch(url, { 17 method: "POST", 18 body: JSON.stringify(request), 19 headers: { 20 "Content-Type": "application/json; charset=utf-8", 21 "X-CSRF-TOKEN": csrf_token 22 }, 23 }) 24 .then(async function (res) { 25 if (!res.ok) throw new Error('HTTP ' + res.status); 26 return res.json(); 27 }) 28 .then(async function (data) { 29 // è¿ããããã¼ã¿(json) 30 if (callback) await callback(data, param); 31 }) 32 .catch(async function (err) { 33 // ã¨ã©ã¼å¦ç 34 console.log(err); 35 }); 36} 37 38/** 39 * ajaxå¦ç(fetch) 40 */ 41const ajax_fetch = function (url, request, callback = null, param = null) { 42 43 fetch(url, { 44 method: "POST", 45 body: request, 46 headers: { 47 "X-CSRF-TOKEN": csrf_token 48 }, 49 }) 50 .then(function (res) { 51 if (!res.ok) throw new Error('HTTP ' + res.status); 52 return res.json(); 53 }) 54 .then(function (data) { 55 // è¿ããããã¼ã¿(json) 56 if (callback) callback(data, param); 57 }) 58 .catch(function (err) { 59 // ã¨ã©ã¼å¦ç 60 console.log(err); 61 }); 62} 63 64//ajax(jsonp)ã®å ±éå¦ç 65var ajax_jsonp = function (url, callback, params = null) { 66 67 fetchJsonp(url, { 68 timeout: 5000, //ã¿ã¤ã ã¢ã¦ãæé 69 }) 70 .then(function (res) { 71 return res.json(); 72 }) 73 .then(function (data) { 74 // è¿ããããã¼ã¿(json) 75 if (callback) callback(data, params); 76 }) 77 .catch(function (err) { 78 // ã¨ã©ã¼å¦ç 79 console.error(err); 80 }); 81 82} 83 84function ajaxImgUpload(event, name) { 85 86 if (event.target.files === null || event.target.files === undefined) return; 87 let file = event.target.files[0]; 88 let ui_id = document.getElementById('ui_id').value; 89 if (file) { 90 // ãã©ã¼ã ãã¼ã¿ã使 91 let formData = new FormData(); 92 formData.append(name, file); 93 formData.append('name', name); 94 formData.append('ui_id', ui_id); 95 96 // Ajaxãªã¯ã¨ã¹ãã使 97 let xhr = new XMLHttpRequest(); 98 xhr.open("POST", home_url + "ajax-img-upload", true); 99 100 xhr.setRequestHeader('X-CSRF-TOKEN', csrf_token); 101 102 //submitãã¿ã³ã䏿ç¡å¹ 103 let submit_elem = document.getElementById('form-submit'); 104 submit_elem.classList.add("btn-disabled-sub"); 105 106 //ã¡ãã»ã¼ã¸è¡¨ç¤º 107 let newContent = '<div class="error-message add-message">ç»åãã¢ãããã¼ãä¸ã§ãã<br>ãã°ãããå¾ ã¡ãã ããã</div>'; 108 let submit_message = document.getElementById('submit-message'); 109 submit_message.insertAdjacentHTML('beforeend', newContent); 110 111 // ã¢ãããã¼ããå®äºããéã®å¦ç 112 xhr.onreadystatechange = function () { 113 if (xhr.readyState === 4 && xhr.status === 200) { 114 // ã¬ã¹ãã³ã¹ãã¼ã¿ãJSONã¨ãã¦è§£æ 115 let response = JSON.parse(xhr.responseText); 116 117 document.getElementById(name + "_status").textContent = ""; 118 119 // ãã¼ã¿ãåå¾ãã¦ä½¿ç¨ 120 let image_url = document.getElementById(name + '_dummy'); 121 image_url.value = response.file_name; 122 123 if (submit_message != null && submit_message.hasChildNodes()) { 124 submit_message.removeChild(submit_message.lastChild); 125 } 126 127 if(response.error){ 128 return; 129 } 130 131 let image_elem = document.getElementById(name); 132 let currentTimestamp = new Date().getTime(); // ããªç§ããç§ã«å¤æ 133 let newContent = '<img src="' + root_url + 'public/uploads/' + response.tenant_id + '/' + response.file_name + '?' + currentTimestamp + '" class="img-fluid">'; 134 newContent += '<div><button type="button" class="btn btn-sm btn-secondary file_delete" data-field="' + name + '">åé¤</button></div>'; 135 newContent += '<input type="hidden" name="' + name + '" value="' + response.file_name + '">'; 136 image_elem.insertAdjacentHTML('beforeend', newContent); 137 138 // è¦ç´ ãåå¾ 139 let fileInput = document.querySelector('input[type="file"][name="' + name + '"]'); 140 141 // 親è¦ç´ ããè¦ç´ ãåé¤ 142 if (fileInput && fileInput.parentNode) { 143 fileInput.parentNode.removeChild(fileInput); 144 } 145 146 submit_elem.classList.remove("btn-disabled-sub"); 147 148 } 149 }; 150 151 // ã¢ãããã¼ãä¸ã®é²æãç£è¦ 152 xhr.upload.onprogress = function (event) { 153 if (event.lengthComputable) { 154 let percentComplete = (event.loaded / event.total) * 100; 155 document.getElementById(name + "_status").textContent = "ã¢ãããã¼ãä¸: " + percentComplete.toFixed(2) + "%"; 156 } 157 }; 158 159 // ãªã¯ã¨ã¹ããéä¿¡ 160 xhr.send(formData); 161 } 162}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.