JSON.stringify返回空

时间:2012-03-02 17:45:33

标签: javascript json

我正在使用WebSQL做一些工作:创建一个通过ajax发送到服务器端脚本的对象来完成一些更复杂的工作。我已经阅读了几十篇关于类似任务的教程,但无论出于何种原因,我的代码都会因JSON.stringify()而返回一个空对象:

function submit_entries(){
    url = "http://myurl.com/process.cfm"
    send_data = new Object();
    db.transaction(function(tx){
        tx.executeSql('SELECT * FROM mytable', [], function(tx, results){
            var len = results.rows.length, i;
            for(var i = 0; i <len; i++){
                send_data["person"+i] = {};
                send_data["person"+i].fname = results.rows.item(i).fname;
            }
        });//end tx.executeSql
    });//end db.transaction
    send_ajax(send_data);
}

function send_ajax(send_data){
    console.log(send_data);  // log 1
    var send_str = JSON.stringify(send_data);
    console.log(send_str); //log 2
    console.log($.parseJSON(send_str)); //log 3
    /*$.ajax({
        url: url,
        data: send_str,
        type: "post",
        contentType: "application/json",
        dataType: 'json',
        success: function(){
            console.log('yay it might have worked.')
        }
    })*/
}

第一个日志将输出一个对象。第二个是一组空的大括号“{}”,第三个将输出一个空对象。我试过没有嵌套的“人”+ i对象,并得到相同的结果。

1 个答案:

答案 0 :(得分:2)

看起来你的db.transaction是异步的。如果是这种情况,则在到达send_ajax调用时它将不会运行。

尝试将send_ajax调用放在function(tx, results){ ... }回调中。