0

jQuery AJAX 呼び出しを使用してテーブル セルの値を割り当てています。セルは小計、mysubtotalB です。結果がはっきりとわかるので、それはうまく機能します。ただし、success 関数の最後には、別の jQuery 関数の呼び出しが含まれています。次の関数は、mysubtotalB に割り当てられたばかりの新しい値を取得し、Total A/テーブル セル mysubtotalA に追加することになっています。

奇妙な点は、新しい値が画面上で mysubtotalB に割り当てられた後でも、jQuery ステートメントを介して返される値が 0 または元の値であることです。しばらく遊んでみると、2 番目の AJAX 呼び出しを実行して別の値を mysubtotalB に割り当てると、以前の値が取得されることに気付きました。つまり、jQuery 割り当てによって返される値は、常に 1 つ古い値でした。2番目の関数の呼び出しが行われる前に合計が割り当てられたとしても、DOMが最初の呼び出しで更新されなかったか、実行の順序に関係している可能性があると推測します。

これがなぜなのか、それについて何をすべきか知っている人はいますか?

<table>
<tr>
<th>Total A</th>
<td id='mysubtotalA'>0.00</td><!-- default state when page loads -->
</tr>
<tr>
<th>Total B</th>
<td id='mysubtotalB'>0.00<td><!-- default state when page loads -->
</tr>
<tr>
<th>Grand total</th>
<td id='mygrandtotal'>0.00<td><!-- default state when page loads -->
</tr>
</table>

$.ajax({
...
success: function(returned){
$('#mysubtotalB').html(returned);//works fine returned value now on screen in mysubtotalB
}
)};

<script>
...
var theReturnedValue = $('#mysubtotalB').html();
alert('theReturnedValue');// outputs "0" the first default value
</script>
4

2 に答える 2

0

これを機能させる方法は、オブジェクトを設定し、返された値と等しいオブジェクト属性を設定することでした。呼び出しページにオブジェクトを作成し、

var mynewobject = new Object();
mynewobject.sumA = 0;
mynewobject.sumB = 0;

次に、success: function() で、適切な属性の値を戻り値に設定します。

...    
success:  function(returned){
mynewobject.sumB = returned;
....

次に、.js ファイルのネストされた関数ループで、変数をその値に設定します。

....
var someothernewvar = mynewobject.sumB;
....

そうすれば、AJAX 呼び出しで値を設定し、複数のネストされたループ内で値を確実に渡すことができます。

于 2013-05-29T03:56:31.763 に答える