私はあなた自身のケーキを作るためのサイトを構築しています. 各ケーキには基本価格と特定のオプションがあります。一部のオプション (例: ストロベリー フィリング) は、ケーキに追加料金を追加します。この価格はデータベース内にあり、機能 ID によって検出されます。
新しいオプションを選択するたびに価格を更新する関数を作成しようとしています。機能を選択するために、ドロップダウン ボックスとチェックボックス リストがあります。オプションのテキストが表示されますが、オプションの値は機能 ID です。JS 関数を使用して、選択した各項目の値を取得します。
私の考えは、ddl/cbl が変更されるたびに additionalPrice を呼び出すことです。これにより、機能 ID を使用してデータベースにクエリが実行され、追加料金が追加されます。問題は、PageMethods が定義されていないことです。VS2012 で入力すると自動入力されず、水色ではなく黒で表示されます。私はこのような他の問題を読んだことがあり、私はすべて正しくやっていると確信しています. これが私のコードです...
<asp:ScriptManager ID="ScriptManager1"
EnablePageMethods="true"
EnablePartialRendering="true" runat="server" />
<script>
$('.featureDropDown').change(function (a) {
//var price = $.ajax({ url: 'ajax/totalproductprice.ashx', async: false }).responseText;
var price = PageMethods.additionalPrice();
alert(price);
</script>
コードビハインド...
[WebMethod] public static int additionalPrice()
{
return 77;
}
additionalPrice は、これが機能するようになると、より多くのロジックを持ちます。このコードでは、ドロップダウンリストを変更すると、「未定義」と警告されます。
編集:最初の質問が解決されたので、別の質問があります。最終価格を保持するラベルを additionalPrice から返された値に設定しようとしています。PageMethods の onSuccess メソッドでこれを実行しようとしています。ページの上部に一般的なラベルがあります -
<asp:Label ID="lblPrice" runat="server" />
これが私のonSuccessであり、私が試したさまざまなことです。それらのどれもラベルに何もしません。
function onSuccess(result) {
alert(result + "worked");
$('.lblPrice').attr("text", result);
$('.lblPrice').attr('text', function () {
$(this).attr('text', result);
})
$('.lblPrice').text(result);
document.getElementById('lblPrice').value = result;
document.all('lblPrice').innerHTML = result;
}