나는 자신의 케이크를 만들 사이트를 만들고 있습니다. 각 케이크에는 기본 가격 및 특정 옵션이 있습니다. 일부 옵션 (예 : 딸기 채우기)은 케이크에 가격을 추가합니다. 이 가격은 데이터베이스에 있으며 기능 ID로 찾을 수 있습니다.PageMethods codebehind에서 함수를 호출하지 않음 - 정의되지 않음
새로운 옵션을 선택할 때마다 가격을 업데이트하는 함수를 작성하려고합니다. 기능을 선택하려면 드롭 다운 상자와 체크 박스 목록이 있습니다. 옵션 텍스트를 표시하지만 옵션 값은 기능 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>
Codebehind가 ...
[WebMethod] public static int additionalPrice()
{
return 77;
}
additionalPrice 더 많은 로직을 것입니다. 이 코드를 사용하여 드롭 다운 목록을 변경하면 '정의되지 않음'을 알립니다.
편집 : 이제 첫 번째 질문이 해결되었으므로 다른 질문이 있습니다. additionalPrice에서 반환 된 값으로 최종 가격을 보유하는 레이블을 설정하려고합니다. 나는 PageMethods에서 onSuccess 메서드를 사용하여이 작업을 수행하려고합니다. 난 그냥 페이지 상단에 일반 레이블이 - 여기
<asp:Label ID="lblPrice" runat="server" />
내는 onSuccess, 내가 시도했던 다른 것입니다. 그들 중 누구도 라벨에 아무 것도하지 않습니다. ASP.NET AJAX
PageMethods
를 사용하는 경우
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;
}
감사합니다. 필요하지 않았다. 또한, 이제는 가격 인 'undefined'를 경고 한 다음 77을 대기 중입니다. 가격을 77로 설정하지 않았습니다. 나는 또한 % code $ ('. lblPrice'). attr ("src", price); $ ('.lblPrice') .attr ('src', function() { $ (this) .attr ('src', price); })' 아무 것도 변경되지 않았습니다. 가격 변수를 설정 한 후입니다. 이것은 lblPrice를 전혀 변경하지 않습니다. 나는 그것을 OnSuccess로 옮기려고했으나 또한 작동하지 않았다. 새로운 가격으로 라벨을 바꾸는 것에 대한 아이디어가 있습니까? –
''undefined '를 반환하는'PageMethods.additionalPrice (onSuccess, onFailure);와 같은'price'를 설정 했으므로'undefined'를 경고합니다.가격을'onSuccess' 함수,'var price = result; '에 설정하려면'onSuccess' 함수에 라벨을 설정하는 로직을 넣을 수 있습니다. – MikeM
나는'onSuccess' 톤으로 이동했으나 여전히 작동하지 않았습니다. 이것은 내가 가진 것입니다.'function onSuccess (result) { alert (result + "worked"); $ ('. lblPrice'). attr ("text", result); } } 죄송합니다. 줄 바꿈을하지 않으셔서 죄송합니다. 어떻게해야할지 모르십니까? (예 : "text", function() . 그것은 77worked를 경고하지만, 레이블을 변경하지 않습니다. –