2009-07-01 5 views
0

HTML要素をページに挿入する関数を呼び出すフォームボタンを押すと、インポートされたjsファイルが再実行されます(ajxコールバック関数のexeへのシミュレーション)。 DOMの挿入により、サーバーからすべてのファイルを再要求するページリフレッシュが発生します。JavaScriptのDOM更新時にHTTP REQUESTを防止する

関数呼び出しに大きなナッシング:DOM更新コードのための

var addFashionVideo = function() { 

var nodeContainer = document.getElementById('vidList'); 
var mytitle = document.forms.addVideo.newVidName.value; 
var addTextNode = document.createTextNode(mytitle); 
var newLI = document.createElement('LI'); 
newLI.appendChild(addTextNode); 
nodeContainer.appendChild(newLI); 

return this; 

}; 

TARGET DIVがある:

<div id="ajParent" class="aj" style="width:325px;background-color:blue;color:white;"> 

<ul id="vidList"> 
<li><a href="javascript://" title="FashVid-Paris">Watch Fashion Paris Video</a></li> 
</ul> 

</div> 

私はこのページにアラートを置き、関数の後に挿入しよう新しいLI [奇妙なことに、LIが分割されて表示されて消えてしまいます]ページの更新が発生して と表示され、ページ上の警告が再実行されます。

//おそらく、私はこのコンピュータでブラウザの問題を抱えているかもしれません。あるいは、私はスクリプタの新しさにたどり着いています //問題が見えないように...コメントは感謝しています。

+0

サイトへのリンクのコードを少し投稿できますか?私は間違ってあなたの質問を読んでいるかもしれないが、私はページに要素を追加するとスクリプトが再実行される原因になるとは思わない。 – MitMaro

+0

Firefox用のLive Headersプラグインがあるので、js DOMの送信ボタンを押した後にgetリクエストが行われているのがわかります ----- DOM機能のアップデートは です。var addFashionVideo = function ){ アラート(「ファッションビデオの追加機能にヒットしました」)。 var nodeContainer = document.getElementById( 'vidList'); var mytitle = document.forms.addVideo.newVidName.value; アラート(「新しいタイトルのエントリは「+ mytitle」です。 var addTextNode = document.createTextNode(mytitle); var newLI = document.createElement( 'LI'); newLI.appendChild(addTextNode); nodeContainer.appendChild(newLI); これを返す。 }; –

+0

インポートされたヘッドタグjsファイルに含まれるアラートは、ページDOM関数でこれを呼び出すとすぐに消えます。すべてが更新されます。 –

答えて

0

フォームで送信すると、フォームでGETリクエストを行ったため、ページがリロードされます。フォームの送信を停止するには、送信時にfalseを返さなければなりません。例えば

document.getElementById('formname').onsubmit = function { 
    return false; 
}; 

あなたは、あなたが提出にあなたのAJAXリクエストを実行し、何をAjaxの機能の成功の上になければならない行うことができ、ページがリロードされませんので、フォームの送信を無効にすることを確認しなければならないでしょう。

あなたのDOM挿入が再ロードを引き起こしているのは本当に疑問です。