私は通貨スイッチャーを構築し、ユーザーが2つの通貨に切り替えることができるサイトに統合しています。その予約サイトは予約フォームが左側に配置されており、予約コンテンツは残りのページを占めていますAjax:divコンテンツを新しいデータで完全に置き換えます
サイトの価格はバックエンドで1通貨にデフォルト/設定されています。この通貨と別の通貨のどちらかを選択する能力があります。
ユーザーが他の通貨を選択すると、ページがリロードされ、価格はこの通貨に設定されます。今、小さな問題は、ユーザーが予約フォームの入力を変更したときに発生します。ユーザーがチェックアウト日を変更したがっているとしたら、ページ上のコンテンツはajaxを使ってリロードされます。何が起きているか:ユーザーが他の通貨に切り替えて予約フォームを変更した場合、デフォルト通貨(USD)が数秒間読み込まれ、その後他の通貨に置き換えられます。あなたはデフォルトから通貨を切り替えています。入力フォームの1つを変更することで予約フォームを変更します。ページがajax-reloadされると、デフォルトの価格が一時的に表示されます。を使用して)表示
これは要するに、価格を運ぶdivが最初にデフォルトの通貨を読み込んだ後に切り替わる(1〜5秒かかる)ようです。これは本当に理想的ではない、divはちょうどすぐに正しい通貨を読み込むことはできません?
ここで、この処理のコードです:
//there's a function that checks currency...
if(currency_param == "KES")
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp = new XMLHttpRequest();
}
else
{
// code for IE6, IE5
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
area.content_area.find('.gdlr-tail-currencyprice').html(this.responseText);
}
};
var result = data.content.match(/\$[\d\.]+ \/ [^<]+/gi);
var newArray = [];
$('.gdlr-tail-currencyprice').each(function(index, el)
{
var num_price = parseFloat(result[index].replace(/[^\d\.]*/g, ''));
newArray.push(num_price);
});
newArray.push({currency_param});
newArray = JSON.stringify(newArray);
xmlhttp.open("GET","switchcurrency.php?q="+newArray,true);
xmlhttp.send();
}
}
switchcurrency.php
は、単にこれは、価格がgdlr-tail-currencyprice
クラスで、上記のように行われる
を渡された量をとり、必要な通貨に変換し、問題の部分。デフォルト値をロードし、数秒後に正しい値を表示します。
area.content_area.find('.gdlr-tail-currencyprice').html(this.responseText);
は私の長い記事は私の質問を明らかにしたホープ:いない場合、私は間違っているのか、何ができるか、提供された新しい値と完全にdivの内容を交換する方法があり、この部分があることハンドル?
何? – cwallenpoole
こんにちは、jqueryタグを追加した場合、なぜ$ .ajaxを使用しないのですか? – daremachine
最初のレンダリング時に属性のデータ属性に異なる通貨の価格を追加しますか? $( '。currency-selector')を使用して、選択した通貨に一致する属性からデータで価格要素の内容を変更します。 – Nukeface