@@ -305,28 +305,48 @@ export class MvcValidationProviders {
305
305
return true ;
306
306
}
307
307
308
- return new Promise ( ( ok , reject ) => {
309
- let url = params [ 'url' ] + '?' + element . name + '=' + encodeURIComponent ( value ) ;
308
+ // params.additionalfields: *.Email,*.Username
309
+ let fieldSelectors : string [ ] = ( params . additionalfields as string ) . split ( ',' ) ;
310
+ let fields : StringKeyValuePair = { } ;
310
311
311
- // params.additionalfields: *.Email,*.Username
312
- let xtras = ( params . additionalfields as string ) . split ( ',' ) ;
312
+ for ( let fieldSelector of fieldSelectors ) {
313
+ let fieldName = fieldSelector . substr ( 2 ) ;
314
+ let fieldElement = getRelativeFormElement ( element . name , fieldSelector ) as HTMLInputElement ;
313
315
314
- for ( let i = 0 ; i < xtras . length ; i ++ ) {
315
- let xtra = xtras [ i ] . substr ( 2 ) ;
316
- if ( xtra === element . name ) {
317
- continue ;
318
- }
316
+ let hasValue = Boolean ( fieldElement && fieldElement . value ) ;
317
+ if ( ! hasValue ) {
318
+ continue ;
319
+ }
319
320
320
- let e = document . getElementById ( xtra ) as HTMLInputElement ;
321
- if ( ! e || ! e . value ) {
322
- continue ;
323
- }
321
+ fields [ fieldName ] = fieldElement . value ;
322
+ }
324
323
325
- url = url + '&' + e . name + '=' + encodeURIComponent ( e . value ) ;
326
- }
324
+ let url : string = params [ ' url' ] ;
325
+ // console.log(fields);
327
326
328
- var request = new XMLHttpRequest ( ) ;
329
- request . open ( 'get' , url ) ;
327
+ let encodedParams : string [ ] = [ ] ;
328
+ for ( let fieldName in fields ) {
329
+ let encodedParam = encodeURIComponent ( fieldName ) + '=' + encodeURIComponent ( fields [ fieldName ] ) ;
330
+ encodedParams . push ( encodedParam ) ;
331
+ }
332
+ let payload = encodedParams . join ( '&' ) ;
333
+ // console.log(payload);
334
+
335
+ return new Promise ( ( ok , reject ) => {
336
+ let request = new XMLHttpRequest ( ) ;
337
+
338
+ if ( params . type === 'Post' ) {
339
+ let postData = new FormData ( ) ;
340
+ for ( let fieldName in fields ) {
341
+ postData . append ( fieldName , fields [ fieldName ] ) ;
342
+ }
343
+ request . open ( 'post' , url ) ;
344
+ request . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded' ) ;
345
+ request . send ( payload ) ;
346
+ } else {
347
+ request . open ( 'get' , url + '?' + payload ) ;
348
+ request . send ( ) ;
349
+ }
330
350
331
351
request . onload = e => {
332
352
if ( request . status >= 200 && request . status < 300 ) {
@@ -348,8 +368,6 @@ export class MvcValidationProviders {
348
368
data : request . responseText
349
369
} ) ;
350
370
} ;
351
-
352
- request . send ( ) ;
353
371
} ) ;
354
372
}
355
373
}
0 commit comments