ユーザーがスコアを選択するたびに更新したいポップアップdivにスコアを表示するこのrails3アプリがあります...(フォームを送信します。)サーバー側でスコアが計算され、AJAXで返されます。これは機能します。次の JavaScript にブレークポイントを設定できます。
$('#eval_form')
.bind("ajax:beforeSend", function (evt, xhr, settings) {
xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script)
})
.bind("ajax:success", function (evt, data, status, xhr) {
var $response = xhr.responseText
var encoded = jQuery.parseJSON($response)
$('#scoretotal').replaceWith('Total Evaluation Score: ' + encoded.scores[0])
//also change button text
$('#score-popup').attr('value', 'testing value')
});
});
encoded.scores[0]
そして `encoded.scores[1] は彼らが望むものと同じです。jQuery の残りの部分が実行され、scoretotal の最初の行が正常に動作し、実際にそのスコアが変更されます...その後、新しいストアで一度だけ更新または置換を行わないだけです...
それだけでなく、ボタン
<button id="score-popup"><%= @document.score %></button>
値は、上記の jquery または .prop でさえ変更されません。なぜこれが不安定な動作をしているのか、私は途方に暮れています...ビューからの残りのコードは次のとおりです。
<div id="element_to_pop_up" class="bobsyouruncle">
<a class="bClose">x</a>
<table cellpadding="10">
<tr>
<th colspan="3">OVERALL EVALUATION RATING</th>
</tr>
<tr>
<td colspan="3" id="scoretotal">Total Evaluation Score: <%= @document.score %></td>
</tr>
...etc...
</table>
</div>
だから私は愚かなことをしていると思います、それはすべて実行され、ある種の作品ですらあります(scoretotalが変更され、その後一度だけ変更され、スコアポップアップは決して変更されません...それはこの投稿と関係がありますか?
jQuery Ajax は 1 回しか実行されませんが、実行するたびに呼び出しているように見えます
??
編集:これを行うことでボタンが機能するようになりました:
$('#score-popup').html(encoded.scores[0])
(どうやらそれはhtmlボタンであるため)そしてそれは機能しますが、コードの残りの部分は最初に実行されたときに機能しますが、後続のコードはデータを変更しないだけです。または replaceWith で正しく変更していませんか?