いくつかあるフォームから「登録」ボタンを押したときに、ローカルストレージとMonacaバックエンドにデータを保存したいのですが、Monacaバックエンドへの登録ができません。
html
1<form data-role="none" id="account" method="post" action="#"> 2 <table data-role="none" class="your_form_table" id="your-form-table"> 3 <tr data-role="none" class="your_form_tr"> 4 <th data-role="none" class="your_form_left"> 5 <label data-role="none" for="service_name"> 6 サービス名 7 </label> 8 </th> 9 <td data-role="none" class="your_form_right"> 10 <input data-role="none" type="text" name="service_name_0" id="service_name_0" class="your_input_text"> 11 </td> 12 </tr> 13 <tr data-role="none" class="your_form_tr"> 14 <th data-role="none" class="your_form_left"> 15 <label data-role="none" for="service_id"> 16 ログインID 17 </label> 18 </th> 19 <td data-role="none" class="your_form_right"> 20 <input data-role="none" type="text" name="service_id_0" id="service_id_0" class="your_input_text"> 21 </td> 22 </tr> 23 <tr data-role="none" class="your_form_tr"> 24 <th data-role="none" class="your_form_left"> 25 <label data-role="none" for="service_pass"> 26 パスワード 27 </label> 28 </th> 29 <td data-role="none" class="your_form_right"> 30 <input data-role="none" type="text" name="service_pass_0" id="service_pass_0" class="your_input_text"> 31 </td> 32 </tr> 33 </table> 34 <input data-role="none" class="btn-flat-double-border-tsuika" id="account_0" type="button" onClick="Add(this);" value="登録する"> 35</form>
javascript
1//ローカルストレージに保存する 2function Add(account_no) { 3 //フォームナンバーを変数に入れる 4 var idNo = account_no.id;//これだと「submit_0」 5 idNo = idNo.replace(/[^0-9]/g, '');//数字を取り出す 6 7 //ローカルストレージに保存する 8 var serviceName = document.getElementById('service_name_' + idNo).value; 9 var serviceId = document.getElementById('service_id_' + idNo).value; 10 var servicePass = document.getElementById('service_pass_' + idNo).value; 11 12 localStorage.setItem('service_name_' + idNo, serviceName); 13 localStorage.setItem('service_id_' + idNo, serviceId); 14 localStore.setItem('service_pass_' + idNo, servicePass); 15 //ここまではOK 16 17 //オンラインストレージに保存 18 var account = monaca.cloud.Collection("Account"); 19 var idno 20 var service_name 21 var service_id 22 var service_pass 23 24 console.log(idNo); 25 26 account.findOneMine('idno == idNo', "idno DESC") 27 .done(function(item) 28 { 29 console.log(idno); 30 item.service_name = serviceName; 31 item.service_id = serviceId; 32 item.service_pass = servicePass; 33 item.update() 34 .done(function(result) 35 { 36 console.log('Updating success'); 37 }) 38 .fail(function(err) 39 { 40 console.log("Err#" + err.code +": " + err.message); 41 }); 42 }); 43}
console.log(idNo);
ではフォームのID「0」が出力されますが、account.findOneMine('idno == idNo', "idno DESC")の後の
console.log(idno);
は「undefined」となっています。
また、その後は
TypeError: null is not an object (evaluating 'item.service_name = serviceName')
というエラーが出てしまいます。
item.service_name = serviceName;をservice_name = serviceName;に書き換えたところ、
TypeError: null is not an object (evaluating 'item.update')
というエラーが出ます。
リファレンスを見ながら書いているのですが、うまくいきません。
どこを直したらいいのか、教えていただけると幸いです。
-追記-
javascript
1function Add(account_no) { 2 //フォームナンバーを変数に入れる 3 var idNo = account_no.id;//これだと「submit_0」 4 idNo = idNo.replace(/[^0-9]/g, '');//数字を取り出す 5 6 //ローカルストレージに保存する 7 var serviceName = document.getElementById('service_name_' + idNo).value; 8 var serviceId = document.getElementById('service_id_' + idNo).value; 9 var servicePass = document.getElementById('service_pass_' + idNo).value; 10 11 localStorage.setItem('service_name_' + idNo, serviceName); 12 localStorage.setItem('service_id_' + idNo, serviceId); 13 localStorage.setItem('service_pass_' + idNo, servicePass); 14 15 //オンラインストレージに登録 16 var account = monaca.cloud.Collection("Account"); 17 console.log(idNo); 18 account.findOne() 19 .done(function(item) 20 { 21 item.service_name = serviceName; 22 item.service_id = serviceId; 23 item.service_pass = servicePass; 24 item.update() 25 .done(function(result) 26 { 27 console.log('Updating success'); 28 }) 29 .fail(function(err) 30 { 31 console.log("Err#" + err.code +": " + err.message); 32 }); 33}); 34 }
このコードではエラーも出ずデータを更新できるのですが、findOne()の中に'idno == idNo', "idno DESC"を入れるとやはり下記のエラーが出てしまいます。
TypeError: null is not an object (evaluating 'item.service_name = serviceName')
コレクションの検索がうまくいっていないみたいです。
どなたか原因などわかりましたら教えてください。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。