我正在建立一个网站来建立你自己的蛋糕。每个蛋糕都有一个基本价格和某些选项。一些选项(例如草莓馅)为蛋糕增加了额外的价格。此价格在数据库中,由功能 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;
}
一旦我让它工作,additionPrice 将有更多的逻辑。使用此代码,当您更改下拉列表时,它会警告“未定义”。
编辑:现在第一个问题已经解决了,我还有另一个问题。我正在尝试将保存最终价格的标签设置为从附加价格返回的值。我正在尝试在 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;
}