我在下面有这段代码:
var json_data = document.getElementById("json_data").value;
console.log(json_data);
tx.executeSql('INSERT INTO floodmaps VALUES (?,?,?)', [1, flodMapName, json_data], function(tx, res) {
//console.log(res);
console.log("rowsAffected: " + res.rowsAffected + " -- should be 1");
//console.log(res.rows.item(0).flood_name);
},
function(tx, error) {
console.log('INSERT error: ' + error.message);
});
tx.executeSql('SELECT *FROM floodmaps', [], function(tx, res) {
//console.log(res);
console.log(res.rows.item(0).id);
console.log(res.rows.item(0).flood_name);
console.log(res.rows.item(0).json_data);
},
function(tx, error) {
console.log('error: ' + error.message);
});
它的作用是从input
元素获取值,然后将该值保存到数据库中。但它没有保存,这是调试控制台中的消息:
rowsAffected: 1 -- should be 1
main.js:208 null
main.js:209 null
main.js:210 null
main.js:241 Transaction Successful
但是当我尝试使用像纯文本/单词这样的样本数据时,它确实可以成功保存。可能是什么问题?
这里是data。
答案 0 :(得分:0)
var json_data = document.getElementById("json_data").value;
console.log(json_data);
var str_json_data=JSON.stringify(json_data); // my edits
tx.executeSql('INSERT INTO floodmaps VALUES (?,?,?)', [1, flodMapName, str_json_data], function(tx, res) {
//console.log(res);
console.log("rowsAffected: " + res.rowsAffected + " -- should be 1");
//console.log(res.rows.item(0).flood_name);
if(res.rowsAffected>0){
tx.executeSql('SELECT * FROM floodmaps', [], function(tx, res) {
//console.log(res);
var len = res.rows.length, i;
for (i = 0; i < len; i++) {
console.log(res.rows.item(i));
}
},
function(tx, error) {
console.log('error: ' + error.message);
});
}
},
function(tx, error) {
console.log('INSERT error: ' + error.message);
});
您必须在插入
之前对json对象进行字符串化