@@ -57,25 +57,31 @@ <h1 class="h2">Add a new friend</h1>
57
57
< div id ="form-container ">
58
58
< div class ="form-group ">
59
59
< label for ="nameInputName "> Name</ label >
60
- < input name =" name " type =" text " class =" form-control " id =" nameInputName "
61
- placeholder =" Ashe123 ">
60
+ < input class =" form-control " id =" nameInputName " name =" name " placeholder =" Ashe123 "
61
+ type =" text ">
62
62
</ div >
63
63
< div class ="form-group ">
64
64
< label for ="phoneInputName "> Phone</ label >
65
- < input name =" phone " type =" text " class =" form-control " id =" phoneInputName "
66
- placeholder =" (11) 11111-1111 ">
65
+ < input class =" form-control " id =" phoneInputName " name =" phone " placeholder =" (11) 11111-1111 "
66
+ type =" text ">
67
67
</ div >
68
68
< div class ="form-group ">
69
69
< label for ="pokemonInputName "> Pokemon</ label >
70
- < input name =" pokemon " type =" text " class =" form-control " id =" pokemonInputName "
71
- placeholder =" Charmander ">
70
+ < input class =" form-control " id =" pokemonInputName " name =" pokemon " placeholder =" Charmander "
71
+ type =" text ">
72
72
</ div >
73
73
< div class ="form-group ">
74
74
< label for ="imageInputName "> Image</ label >
75
- < input name ="image " type ="text " class ="form-control " id ="imageInputName "
76
- placeholder ="Link to image ">
75
+ < input class ="form-control " id ="imageInputName " name ="image " placeholder ="Link to image "
76
+ style ="display:none " type ="text "> < br >
77
+ < img alt ="Card image cap " class ="card-img-top " height ="200 " id ="imageTag " src =""
78
+ style ='object-fit: cover '>
79
+ < br >
80
+ < input id ="imageFileInput " onchange ="previewFile() " type ="file "> < br >
77
81
</ div >
78
- < button id ="submit-button " type ="submit " onclick ="sendRequest() " class ="btn btn-primary " style =""> Add</ button >
82
+ < button class ="btn btn-primary " id ="submit-button " onclick ="sendRequest() " style =""
83
+ type ="submit "> Add
84
+ </ button >
79
85
< br > < br >
80
86
< div id ="register_response "> </ div >
81
87
</ div >
@@ -85,7 +91,7 @@ <h1 class="h2">Add a new friend</h1>
85
91
< img src ="/newfriend.jpeg " class ="img-responsive d-block w-100 " style ='object-fit: cover ' alt ="logo "/>
86
92
</ div >
87
93
</ div >
88
-
94
+
89
95
</ main >
90
96
</ div >
91
97
</ div >
@@ -108,54 +114,64 @@ <h1 class="h2">Add a new friend</h1>
108
114
< script src ="https://code.jquery.com/jquery-3.5.0.js "> </ script >
109
115
< script >
110
116
111
- function toJSONString ( form ) {
117
+ function toJSONString ( form , image ) {
112
118
const obj = { } ;
113
- const elements = form . querySelectorAll ( "input, select, textarea" ) ;
114
- for ( let i = 0 ; i < elements . length ; ++ i ) {
115
- const element = elements [ i ] ;
116
- const name = element . name ;
117
- const value = element . value ;
118
-
119
- if ( name ) {
120
- obj [ name ] = value ;
121
- }
122
- }
119
+
120
+ obj [ 'name' ] = document . getElementById ( "nameInputName" ) . value
121
+ obj [ 'phone' ] = document . getElementById ( "phoneInputName" ) . value
122
+ obj [ 'pokemon' ] = document . getElementById ( "pokemonInputName" ) . value
123
+ obj [ 'image' ] = image ;
123
124
124
125
return JSON . stringify ( obj ) ;
125
126
}
126
127
128
+ function previewFile ( ) {
129
+ const preview = document . querySelector ( 'img' ) ;
130
+ const file = document . querySelector ( 'input[type=file]' ) . files [ 0 ] ;
131
+ const reader = new FileReader ( ) ;
132
+
133
+ reader . addEventListener ( "load" , function ( ) {
134
+ // convert image file to base64 string
135
+ preview . src = reader . result ;
136
+ } , false ) ;
137
+
138
+ if ( file ) {
139
+ reader . readAsDataURL ( file ) ;
140
+ }
141
+ }
142
+
143
+
127
144
function sendRequest ( ) {
128
- let json = toJSONString ( document . getElementById ( "form-container" ) ) ;
145
+ const preview = document . querySelector ( 'img' ) ;
146
+ let json = toJSONString ( document . getElementById ( "form-container" ) , preview . src ) ;
147
+ json = json + "\r\n\0" ;
129
148
let xhr = new XMLHttpRequest ( ) ;
130
149
let url = "/post" ;
131
150
let button = document . getElementById ( "submit-button" ) ;
132
- let responseDiv = document . getElementById ( "register_response" )
133
151
let oldButtonColor = button . style . backgroundColor ;
134
152
let oldButtonName = button . innerText ;
135
153
154
+ xhr . open ( "POST" , url , true ) ;
155
+ xhr . setRequestHeader ( "Content-Type" , "application/json" ) ;
156
+ xhr . setRequestHeader ( "Cache-Control" , "no-cache, no-store, max-age=0" ) ;
157
+
136
158
xhr . onreadystatechange = function ( ) {
137
- switch ( this . readyState ) {
159
+ switch ( this . readyState ) {
138
160
case 1 :
139
161
button . style . opacity = "1.0"
140
162
button . setAttribute ( "disabled" , "true" ) ;
141
163
console . log ( "OPENED" )
142
164
break ;
143
165
case 4 :
144
- // responseDiv.innerHTML = this.responseText;
145
- // setTimeout(() => {
146
- // responseDiv.innerHTML = "";
147
- // }, 3000)
148
-
149
- if ( this . status === 201 ) {
166
+ if ( this . status === 201 ) {
150
167
button . style . backgroundColor = "#48D40B"
151
168
button . innerText = "OK" ;
152
- }
153
- else {
169
+ } else {
154
170
button . style . backgroundColor = "#EB1C0A"
155
171
button . innerText = "ERROR"
156
172
}
157
173
158
- setTimeout ( ( ) => {
174
+ setTimeout ( ( ) => {
159
175
button . style . background = oldButtonColor ;
160
176
button . innerText = oldButtonName ;
161
177
button . removeAttribute ( "disabled" ) ;
@@ -165,11 +181,8 @@ <h1 class="h2">Add a new friend</h1>
165
181
break ;
166
182
}
167
183
}
168
-
169
- xhr . open ( "POST" , url , true ) ;
170
- xhr . setRequestHeader ( "Content-Type" , "application/json" ) ;
171
- xhr . setRequestHeader ( "Cache-Control" , "no-cache, no-store, max-age=0" ) ;
172
184
xhr . send ( json ) ;
185
+ console . log ( "send: " , json )
173
186
}
174
187
175
188
</ script >
0 commit comments