2010-12-15 5 views
0

ナットシェルIの趣味としてプログラムします。私はSafari 5のSQLiteデータベースにデータを挿入しようとしています。Safari 5:Javascript sqlite 'insert transaction'はスコープ内の変数が正しく表示されないようです

私は、自宅で焼いた拡張機能を使用しているため、注入攻撃を心配していません。これは私が訪れたサイトからデータを収集するためです。

私の動作は、「DOM変更イベント」からのデータを含むループの反復ごとに最大20回程度の反復をINSERTすると、渡された変数が正しく表示されません。 'console.log(変数)'を呼び出すと、正しいデータが含まれていることが示されますが、INSERTはレコードごとに正しい(異なる)データを挿入しません。他の不正行為と同じ範囲)。

私は「労働者」が重要であることを読んだが、それについては何も知らない。

N.B. Windows 7 Pro

ありがとうございました。ありがとうございました。


enter code here: HandleDOM_Change = function() { 
for (p=0; p<snip.length; p++) { 
    title = snip[p].getElementsByClassName('title')[0].firstChild.textContent; 
    value = snip[p].getElementsByClassName('value')[0].firstChild.textContent; 
    lang = snip[p].getElementsByClassName('lang')[0].textContent; 
    if (hP[p] != lang) { 
     ++count; 
     id = count; 
     db.transaction(function (tx) { 
      console.log("events:" +events+ " title:" +title+ " value/p+1/lang: " +value+ ", " +(p+1)+ ", " +lang); 
      tx.executeSql('INSERT INTO foo (id, text, time, name) VALUES (?, ?, ?, ?)', [id, title, value, lang]); 
     },myTransactionErrorCallback,myTransactionSuccessCallback); 
    hP[p] = lang; 
    } 
} 
++events; 

}

//グローバル変数:イベントはINTEGER、ARRAYをチョキ、愚かな構文の問題を許しなさいINTEGER を数えるには - しかし、本質の遺跡 - 私はそれを読みやすくするためにいくつかのもみ殻を削除する必要がありましたコンソールログにはvarsに必要なものが含まれているとレポートされますが、 'tx.executeSql'にはnoと表示されます。

N.B.問題を見つけるために、すべての制約が挿入された値から削除されました。たとえ主キーが宣言に主張されていなくても(これはグローバルレベルで先に行われます)。また明確にするために、 'id'は正しくインクリメントされ、dbにそのように記録されますが、他の3つは変わらない値で挿入されます(ログがIDを出力しないことに気づきました。清潔にする前に - 正直に)。

多くのありがとうございます。

+1

私たちのお手伝いをするためにコードを投稿する必要があります。 – thirtydot

+0

ようこそStackOverflowへ。カップルの指針...あなたが周りにいたい場合は、アカウントを登録してください。あなたの登録されていない2つのアカウントをマージしました。登録されていないと、複数のアカウントを簡単に作成できます。また、いつでも質問を編集して追加情報を追加することができます。最後に、数日後にソリューションとして回答を選択することができます。ちょっと変わったようですが、それがこれらの部分をどのように処理するかです。 – Will

答えて

0

私はそれをぼんやりしていると思っています。各繰り返しの間に再割り当てされるが、単純な整数ではない 'タイトル'などの「共通」変数は、最後の値で取得され、参照と値が一致すると思うパズルまでの「p」です。それは常にレコーダーであるループの最後の反復中の値です。解決するために、これらの値を新しい配列に単純に再記録し、現在の配列の長さなどを心配する必要がなくなり、 'push(..)'と 'pop(..)'を使用しましたその配列。私は私が上に進むことができると言うのが早すぎるとは思わない。見て、傷ついてくれてありがとう。

関連する問題