jQuery가 진행률 표시 줄로 바뀌는 div 목록이 있습니다. .ready에서 모든 진행 막대의 목록을 만들고 각각에 대해 진행률 표시 줄의 전체 길이를 나타내는 값을 가져 오는 웹 서비스를 호출합니다. 이렇게하려면 div의 ID를 웹 서비스에 전달해야합니다. div의가있는 ListView 내부에 있기 때문에jQuery에서 C# 웹 서비스 (JSON 사용)에 요소의 ID 전달
, 나는 수동으로 ID = "completionbar_ <퍼센트 번호 평가 ("MilestoneID ")로 ID를 설정 %>"
그러나, 나는 내 웹 서비스에이 ID를 통과 할 때 매번 "정의되지 않은"것으로 나타납니다. 소스를 볼 때 올바르게 설정된 것처럼 보입니다. 지금 아무것도하지 않는 웹 서비스 스텁 여기
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$(".MilestoneCompletion").progressbar({ value: 0 });
$.each($(".MilestoneCompletion"), function(index, barDiv) {
$.ajax({
type: "POST",
url: "ProjectTracking.aspx/GetText",
data: "{'id':'" + $(barDiv).id + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success:
function(msg) {
$(barDiv).progressbar("value", msg.d);
}
});
});
});
</script>
입니다 :
여기[System.Web.Services.WebMethod]
public static int GetText(string id)
{
return 75; // returns completion percent
}
내가의 ID를 설정하고있어 어디
다음 서비스 내 웹 호출하는 jQuery의 ListView의 div :
<ItemTemplate>
<li class="ui-widget-content" >
...
<!-- when this div loads, I want to call my webservice -->
<div id="completionbar_<%# Eval("MilestoneID") %>" class="MilestoneCompletion" style="height:30px;"></div>
...
</li></ItemTemplate>
나는 스크립트가 DIV id보다 먼저 실행되고 있다고 생각합니다. i ListView 데이터 바인딩에 의해 설정된?
이 문제를 해결할 수 있습니까, 아니면 내 방식에 근본적인 결함이 있습니까?
이 점은 각 진행률 표시 줄을 75 %로 올바르게 채 웁니다. –