PageSourceSearch

https://ktmss.org.hk/front/js/ajax.js?1791082457

js ktmss.org.hk collected 2026-10-04 02:54:49 UTC 15,821 bytes, 599 lines download raw bytes

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.