1 2 3/* 4 5apiUrl, httpType, formActionD, CSRFToken, RedirectURL , serializeData, dataFormat 6 7*/ 8 9function axiosFormRequest( data ){ 10 11 var submitButton = data['submitButton'] ; 12 var form = data['form'] ; 13 var formAction = data['action'] ; 14 15 var returnType = data['returnType'] ; 16 17 18 if ( submitButton== form ){ return; } 19 if ( submitButton == null && formAction == null ){ return; } 20 21 if ( form == null){ 22 var formData = new FormData(); 23 }else{ 24 var formData = new FormData(form); 25 } 26 27 28 //Append field in all request 29 if ( data['returnType'] == null ){ 30 formData.append ('returnType', 'JSON' ) ; 31 }else{ 32 formData.append ('returnType', data['returnType'] ) ; 33 } 34 35 var action = ''; 36 if ( submitButton == null ){ 37 action = formAction ; 38 }else{ 39 action = submitButton.closest('form').getAttribute('action') 40 } 41 42 43 // Check axios library docs: https://axios-http.com/docs/intro 44 // var awaitResponse = await 45 axios.post(action, 46 formData, 47 { 48 headers: { 49 'Content-Type': 'multipart/form-data' 50 } 51 } 52 ).then(function (response) { 53 if (response) { 54 55 //form.reset(); 56 57 if ( response.data.status == 1 ){ 58 if ( returnType == null){//return to current page callback 59 success_callback_parent(response.data); 60 }else if ( returnType == 'master'){//return to Master callback 61 master_success_callback_parent(response.data); 62 }else{ 63 // console.log( response ); 64 return response; 65 } 66 67 }else{ 68 if ( returnType == null){//return to current page callback 69 fail_callback_parent(response.data); 70 }else if ( returnType == 'master'){//return to Master callback 71 master_fail_callback_parent(response.data); 72 }else{ 73 return response; 74 } 75 } 76 77 } else { 78 79 //Error Data 80 var error = { 81 title : trans('form.general.error') , 82 text : trans('form.general.error') , 83 confirmButtonText: trans('form.general.error.confirm') , 84 footer : '' , 85 }; 86 87 popup_error( error ); 88 89 } 90 }).catch(function (error) { 91 Swal.fire({ 92 text: trans('form.general.error'), 93 icon: "error", 94 buttonsStyling: false, 95 confirmButtonText: trans('form.general.error.confirm'), 96 customClass: { 97 confirmButton: "btn btn-primary" 98 } 99 }); 100 }).then(() => { 101 if ( submitButton != null ){ 102 // Hide loading indication 103 submitButton.removeAttribute('data-kt-indicator'); 104 // Enable button 105 submitButton.disabled = false; 106 } 107 108 // return new Promise(function(resolve, reject) { 109 // console.log( 'promise last' ); 110 // // resolve the promise with some value 111 // resolve(); 112 // }) 113 114 }); 115 116 117} 118 119 120 121async function axiosFormRequestAsync( data , headers ){ 122 123 var submitButton = data['submitButton'] ; 124 var form = data['form'] ; 125 var formAction = data['action'] ; 126 var formDataCustom = data['formDataCustom'] ; 127 128 // console.log( "form=" + form); 129 // console.log( "formAction=" + formAction); 130 131 132 var returnType = data['returnType'] ; 133 134 if ( submitButton != null && form != null){ 135 if ( submitButton == form ){ return; } 136 } 137 138 if ( submitButton == null && formAction == null ){ return; } 139 140 141 //console.log( "formDataCustom=" + formDataCustom); 142 143 if ( form == null){ 144 if ( formDataCustom != null){ 145 var formData = formDataCustom; 146 }else{ 147 var formData = new FormData(); 148 } 149 150 }else{ 151 var formData = new FormData(form); 152 } 153 154 //Append field in all request 155 if ( data['returnType'] == null ){ 156 formData.append ('returnType', 'JSON' ) ; 157 }else{ 158 formData.append ('returnType', data['returnType'] ) ; 159 } 160 161 var action = ''; 162 if ( submitButton == null || formAction != null ){ 163 action = formAction ; 164 }else{ 165 action = submitButton.closest('form').getAttribute('action') 166 } 167 168 // console.log( "action=" + action); 169 170 // console.log( data['pondFiles'] ); 171 //Multi File Upload 172 if ( data['pondFiles'] != null ){ 173 174 if ( data['pondFiles'].length != 0 ){ 175 for (var i = 0; i < data['pondFiles'].length; i++) { 176 for (const [key, value] of Object.entries(data['pondFiles'][i])) { 177 console.log(key); 178 console.log(value); 179 180 // append the blob file 181 for (var j = 0; j < value.length; j++) { 182 formData.append(key+'[]', value[j].file); 183 } 184 185 186 } 187 } 188 } 189 190 } 191 192 193 194 //Headers 195 if ( headers == null){ 196 //Default haders 197 var headers = { 198 headers: { 'Content-Type': 'multipart/form-data' } 199 }; 200 } 201 202 203 return await axios.post(action, 204 formData, 205 headers, 206 // { 207 // headers: { 208 // 'Content-Type': 'multipart/form-data' 209 // } 210 // } 211 212 ); 213 214} 215 216 217 218function form_submit_ajax( aryData = [] ){ 219 console.log( aryData['serializeData'] ); 220 221 222 var httpType = aryData['httpType']; 223 var apiUrl = aryData['apiUrl']; 224 var formActionD = aryData['formActionD']; 225 var CSRFToken = aryData['CSRFToken']; 226 227 var serializeData = aryData['serializeData']; 228 229 var success_msg = aryData['success_msg']; 230 var dataFormat = aryData['dataFormat']; 231 232 var formActionType = aryData['formActionType']; 233 234 var successRedirect = aryData['successRedirect']; 235 var failRedirect = aryData['failRedirect']; 236 237 var showLoading = aryData['showLoading']; 238 239 240 if ( showLoading == false){ 241 242 sendAjaxRequest( aryData ); 243 244 }else{ 245 246 //popup dialog 247 bootbox.dialog({ 248 //centerVertical: true, 249 //size: 'small',
250 closeButton: false, 251 className: 'ajax-popup', 252 message: '<div class="spinner-border" role="status"></div>' 253 })// this is the change 254 .on('shown.bs.modal', function(){ 255 256 double_click_status = true; 257 258 sendAjaxRequest( aryData ); 259 260 //boot box 261 }); 262 263 } 264 265 266 267 268 269 } 270 271 272 function sendAjaxRequest( aryData = [] ){ 273 274 var httpType = aryData['httpType']; 275 var apiUrl = aryData['apiUrl']; 276 var formActionD = aryData['formActionD']; 277 var CSRFToken = aryData['CSRFToken']; 278 279 var serializeData = aryData['serializeData']; 280 281 var success_msg = aryData['success_msg']; 282 var dataFormat = aryData['dataFormat']; 283 284 var formActionType = aryData['formActionType']; 285 286 var successRedirect = aryData['successRedirect']; 287 var failRedirect = aryData['failRedirect']; 288 289 double_click_status = true; 290 291 // console.log(serializeData); 292 293 var formData = new FormData(); 294 // formData.append('query', msg); 295 // formData.append('_token', '<?= $env['CSRFToken'] ?>'); 296 297 if ( dataFormat == null){ 298 //Form Element 299 for (let i = 0; i < serializeData.length; ++i) { 300 formData.append(serializeData[i].name, serializeData[i].value); 301 } 302 }else{ 303 formData =serializeData; 304 } 305 306 307 308 //multi File 309 $.each($("input[type=file]"), function(i, obj) { 310 $.each(obj.files,function(j, file){ 311 formData.append('attach_file['+j+']', file); 312 //console.log( file ); 313 }) 314 }); 315 316 317 $.ajax({ 318 type: httpType, 319 url: apiUrl, 320 beforeSend: function(xhr){xhr.setRequestHeader('X-CSRF-Token', CSRFToken);}, 321 //data:{"query":serializeData,"action":formActionD,"_token": $('#csrf_token').val()}, 322 data: formData, 323 dataType: 'html', 324 processData: false, 325 contentType: false, 326 327 success:function(data){ 328 329 bootbox.hideAll(); 330 331 //console.log($.trim(data) ); 332 333 var objResult = jQuery.parseJSON( $.trim(data) ); 334 //console.log(objResult.status ); 335 //alert( objResult.response ); 336 337 objResult.formActionType = formActionType;//return action 338 339 if ( successRedirect != null ){ 340 objResult.successRedirect = successRedirect;//return successRedirect 341 } 342 if ( failRedirect != null ){ 343 objResult.failRedirect = failRedirect;//return failRedirect 344 } 345 346 347 if( objResult.status == true ){ 348 349 350 switch(formActionType) { 351 case 'register': 352 case 'sms_verify': 353 case 'actviate': 354 case 'resend_sms': 355 case 'forgot_pwd': 356 case 'forgot_sms_verify': 357 case 'forgot_reset_pwd': 358 case 'login_first': 359 case 'login': 360 case 'logout': 361 success_callback_parent_register( objResult ); 362 break; 363 364 365 366 default: 367 success_callback_parent( objResult ); 368 } 369 370 371 }else{ 372 switch(formActionType) { 373 case 'register': 374 case 'sms_verify': 375 case 'actviate': 376 case 'resend_sms': 377 case 'forgot_pwd': 378 case 'forgot_sms_verify': 379 case 'forgot_reset_pwd': 380 case 'login_first': 381 case 'login': 382 case 'logout': 383 fail_callback_parent_register( objResult ); 384 break; 385 386 default: 387 fail_callback_parent( objResult ); 388 } 389 390 391 392 } 393 394 395 }, 396 error: function (xhr, ajaxOptions, thrownError) { 397 bootbox.hideAll(); 398 399 console.log (xhr.responseText); 400 alert (xhr.responseText); 401 402 } 403 404 405 }); 406 407 } 408 409 function form_submit_ajax_simple( apiUrl, httpType, formActionD, CSRFToken , serializeData, dataFormat ){ 410 //alert( serializeData ); 411 var success_msg= ''; 412 if ( formActionD == "add" ){ 413 success_msg = "<?= __('jsMessage.label.data_add_success') ?>"; 414 }else if ( formActionD == "del" ){ 415 success_msg = "<?= __('jsMessage.label.data_del_success') ?>"; 416 }else{ 417 success_msg = "<?= __('jsMessage.label.data_edit_success') ?>"; 418 } 419 420 //popup dialog 421 bootbox.dialog({ 422 //centerVertical: true, 423 //size: 'small',
424 closeButton: false, 425 message: '<div class="text-center "><span class="u-icon-v1 u-icon-size--md g-mr-10 g-mb-10"><i class="fal fa-spin fa-spinner "></i></span><h3 class="g-mr-10"><?= __("jsMessage.label.ajax_loading_msg") ?></h3></div>', 426 })// this is the change 427 .on('shown.bs.modal', function(){ 428 429 double_click_status = true; 430 431 // console.log(serializeData); 432 433 var formData = new FormData(); 434 // formData.append('query', msg); 435 // formData.append('_token', '<?= $env['CSRFToken'] ?>'); 436 437 if ( dataFormat == null){ 438 //Form Element 439 for (let i = 0; i < serializeData.length; ++i) { 440 formData.append(serializeData[i].name, serializeData[i].value); 441 } 442 }else{ 443 formData =serializeData; 444 } 445 446 console.log( formData ); 447 448 449 //multi File 450 $.each($("input[type=file]"), function(i, obj) { 451 $.each(obj.files,function(j, file){ 452 formData.append('attach_file['+j+']', file); 453 //console.log( file ); 454 }) 455 }); 456 457 458 $.ajax({ 459 type: httpType, 460 url: apiUrl, 461 beforeSend: function(xhr){xhr.setRequestHeader('X-CSRF-Token', CSRFToken );}, 462 //data:{"query":serializeData,"action":formActionD,"_token": $('#csrf_token').val()}, 463 data: formData, 464 dataType: 'html', 465 processData: false, 466 contentType: false, 467 468 success:function(data){ 469 470 471 bootbox.hideAll(); 472 473 //console.log($.trim(data) ); 474 475 var objResult = jQuery.parseJSON( $.trim(data) ); 476 console.log(objResult.status ); 477 //alert( objResult.response ); 478 479 var miscData = objResult.misc[0]; 480 console.log(miscData ); 481 482 var formActionType = miscData.formActionType; 483 484 //var successMsg = miscData.noticeSuccess; 485 486 // miscData.formActionType = formActionType;//return action 487 488 // if ( successRedirect != null ){ 489 // miscData.successRedirect = successRedirect;//return successRedirect 490 // } 491 // if ( failRedirect != null ){ 492 // miscData.failRedirect = failRedirect;//return failRedirect 493 // } 494 495 496 if( objResult.status == true ){ 497 498 499 switch(formActionType) { 500 case 'register': 501 case 'sms_verify': 502 case 'actviate': 503 case 'resend_sms': 504 case 'forgot_pwd': 505 case 'forgot_sms_verify': 506 case 'forgot_reset_pwd': 507 case 'login_first': 508 case 'login': 509 case 'logout': 510 success_callback_parent_register( objResult ); 511 break; 512 513 514 515 default: 516 success_callback_parent( objResult ); 517 } 518 519 520 }else{ 521 switch(formActionType) { 522 case 'register': 523 case 'sms_verify': 524 case 'actviate': 525 case 'resend_sms': 526 case 'forgot_pwd': 527 case 'forgot_sms_verify': 528 case 'forgot_reset_pwd': 529 case 'login_first': 530 case 'login': 531 case 'logout': 532 fail_callback_parent_register( objResult ); 533 break; 534 535 default: 536 fail_callback_parent( objResult ); 537 } 538 539 540 541 } 542 543 // bootbox.hideAll(); 544 545 // //console.log($.trim(data) ); 546 547 // var objResult = jQuery.parseJSON( $.trim(data) ); 548 // //console.log(objResult.status ); 549 // //alert( objResult.response ); 550 551 552 // if( objResult.status == true ){ 553 554 // Swal.fire( 555 // { 556 // type: "success", 557 // title: success_msg, 558 // html: "", 559 // footer: "<?= __('jsMessage.label.ajax_success_loading') ?><div class='spinner-border text-info' role='status'><span class='sr-only'><?= __('jsMessage.label.ajax_success_refreshing') ?></span></div>", 560 // timer: 1000, 561 // onClose: function onClose() 562 // { 563 // success_callback_parent( objResult ); 564 // } 565 566 // }); 567 568 569 // }else{ 570 // //alert('åªé¤ç¼çåé¡!'); 571 572 // var return_data = objResult.error ; 573 // //alert(return_data); 574 575 // if ( return_data == '' ){ //default 576 // return_data = "<?= __('jsMessage.label.ajax_general_error') ?>"; 577 // } 578 579 // fail_callback_parent( objResult ); 580 581 // } 582 583 584 }, 585 error: function (xhr, ajaxOptions, thrownError) { 586 bootbox.hideAll(); 587 588 console.log (xhr.responseText); 589 alert (xhr.responseText); 590 591 } 592 593 594 }); 595 596 //boot box 597 }); 598 599 }
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.