2012-03-09 27 views
1

私はCFdivを持つCFページを持っています。 Cfdivはページ上の要素にバインドされています。メインページにはスクリプトが含まれています。 CFdiv内の要素に対して実行されるスクリプトはありません。 ajax呼び出しに問題があるようです。そのコードを取り出すと、残りのコードはFirebugで有効になっているようですが、まだ実行されません。Jquery cfml - 実行可能なスクリプトはありません

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#candidatesubmit').on('click', function() { 
     $.ajax({ 
     type: 'POST', 
     url: 'actEditStatusForm.cfm', 
     data: 'form=', 
     error: function (xhr, textStatus, errorThrown)(
     // show error 
     alert(errorThrown);), 
     success: function (response1, textStatus, jqXHR)(
     alert('success');) 
     }); 
    ColdFusion.Grid.refresh('candidatesGrid', true); 
    }); 
    $(function() {$("#JDOrgChartRESOutlineSentToCand").datepicker({dateFormat: 'yy/mm/dd'});}); 
    $(function() {$("#IndepthWRec").datepicker({dateFormat: 'yy/mm/dd'});}); 
</script> 

答えて

4

まず、構文エラーがあります。おそらく、これは上記のように貼り付けただけの問題であり、実際のコードではありません。しかし、あなたのエラー関数と成功関数の本文がかっこではなく中括弧で囲まれていることを確認してください。だからではなく、本の

error: function (xhr, textStatus, errorThrown)(
    alert(errorThrown);), 

あなたはこれを持っている必要があります。

error: function (xhr, textStatus, errorThrown) { 
    alert(errorThrown); 
}, 

第二には、あなたのグリッドのリフレッシュは、AJAX呼び出しの成功関数の外です。その呼び出しは非同期であるため、呼び出しが完了する前にグリッドの更新が実行されている可能性があります。このように、あなたの成功コールバック関数にリフレッシュを移動:CFDIVの内容は非同期にロードされている、と#candidatesubmit要素はその動的にロードされたコンテンツ内にある場合

success: function (response1, textStatus, jqXHR){ 
    ColdFusion.Grid.refresh('candidatesGrid', true); 
    alert('success'); 
} 

第三に、あなたの関数をにバインドされることはありませんそのclickイベントは、メインページのreadyイベントがトリガされたときには表示されないため、このイベントは発生しません。

要素に直接バインドするのではなく、最初のページの読み込み時に存在することがわかっている、囲む要素のイベントをリスニングして委任戦略を使用します。だからではなく、この:

$('#candidatesubmit').on('click', function() { 

はこのような何かを試してみてください:

$('#some_outer_div').on('click','#candidatesubmit', function() { 

今までのものもその子孫要素(から泡がときに、ページは存在していなかったということをすべてのクリックイベントをリッスンします#some_outer_div最初にロードされた)。これらのクリックのターゲットが#candidatesubmitの場合、ハンドラが起動します。

+0

私は常に成功のコールバックに巻き込まれるようです。しかし、偉大なキャッチ。よく働く。 – user990016

関連する問題