2017-11-29 5 views
0

그래서 내가 할 노력하고있어 것은 그들이 이미 일단 페이지로 다시 작성되는 테이블 헤더를 <th>Username</th> 등 ...을 방지하거나 results에 존재하는 분명한 중 하나이다 존재하는 경우 JQuery와 확인 요소를 만들고 다시 작성하십시오. 내가 시도하는 것은 아무것도 작동하지 않는 것 같습니다. 또는 < 1 또는 < 2을 확인하려고하는데 .get(0), .text("")을 확인하려고 시도했지만 아무 것도 작동하지 않는 것으로 보입니다. this post here. 그냥 헤더를 다시 작성하거나 전혀 쓰지 않습니다. 헤더 대신 결과 만 추가하거나 바람직하게는 의 결과를 지우고 매번 버튼을 클릭 할 때 모든 것을 다시 쓰길 원합니다. 문제는, 내가 버튼을 매번 클릭 할 때, 나는 길이가 0에서 시작됩니다 또는 entryIndex 당신은 각 기능을 사용하여 배열의 색인을 다시 0HTML 테이블 헤더가 이미

<div> 
    <h4>Results</h4> 
    <table class="table" style="white-space: nowrap" id="results"> 

    </table> 
</div> 
<script> 
    $('#lookup').click(function (event) { 
     strUser = $('#userid').val(); 
     lookfor = JSON.parse('{ "username":"' + strUser + '" }'); 
     $.ajax({ 
      type: "POST", 
      url: "/Home/FindUser", 
      data: lookfor, 
     }).done(function (data) { 
      var html = "" 
      if ($('#results').length < 2) { 
       html += "<tr>" 
       html += "<th>Username</th>" 
       html += "<th>Server</th>" 
       html += "<th>App</th>" 
       html += "</tr>" 
      } 


      var err = "" 

      $.each(data, function (entryIndex, entry) { 
       if (entry.ErrorMessage) { 
        err = "<tr>" 
        err += "<td>" + entry.ErrorMessage + "</td>" 
        err += "</tr>" 
       } else { 
        html += "<tr>" 
        html += "<td>" + entry.UserId + "</td>" 
        html += "<td>" + entry.ServerName + "</td>" 
        html += "<td>" + entry.AppName + "</td>" 
        html += "</tr>" 
       }   
      }); 
      if (err.length > 0) { 
       $('#results').append($(err)); 
      } else { 
       $('#results').append($(html)); 
      } 


     }); 
    }); 
</script> 
+0

동시성 문제처럼 보입니다. 각 기능 내부에서 헤더 체크가 필요합니다. –

+0

몇 번 시도해 보니 문제에 대한 내용이 변경되지 않았습니다. 루프에 넣든지 상관없이 같은 문제. 결과 요소의 길이가 무엇 인지도 모르겠다. –

+0

반환 된 결과를 보려면 길이를 콘솔에 기록 했습니까? –

답변

1
<div> 
    <h4>Results</h4> 
    <table class="table" style="white-space: nowrap" id="results"> 

    </table> 
</div> 
<script> 
    $('#lookup').click(function (event) { 
     strUser = $('#userid').val(); 
     lookfor = JSON.parse('{ "username":"' + strUser + '" }'); 
     $.ajax({ 
      type: "POST", 
      url: "/Home/FindUser", 
      data: lookfor, 
     }).done(function (data) { 
      var html = ""; 
      var err = ""; 

      $.each(data, function (entryIndex, entry) { 
       if (entryIndex == 0) { 
        html += "<tr>" 
        html += "<th>Username</th>" 
        html += "<th>Server</th>" 
        html += "<th>App</th>" 
        html += "</tr>" 
       } 
       if (entry.ErrorMessage) { 
        err = "<tr>" 
        err += "<td>" + entry.ErrorMessage + "</td>" 
        err += "</tr>" 
       } else { 
        html += "<tr>" 
        html += "<td>" + entry.UserId + "</td>" 
        html += "<td>" + entry.ServerName + "</td>" 
        html += "<td>" + entry.AppName + "</td>" 
        html += "</tr>" 
       }   
      }); 
      if (err.length > 0) { 
       $('#results').append($(err)); 
      } else { 
       $('#results').append($(html)); 
      } 


     }); 
    }); 
</script> 

에 생각이다 따라서 배열의 첫 번째 항목을 알 수 있습니다. 인덱스를 사용하여 조건부로 헤더를 추가 할 수 있습니다.

+0

나는 당신이 여기에 뭔가있는 것 같지만이 정확한 해결책은 효과가없는 것 같습니다. 매번 헤더를 쓰고 있습니다. 혼란은 루프에서 일어난다 고 생각하지만, 버튼을 다시 클릭하면 아무 일도 일어나지 않습니다. entryIndex는 버튼을 클릭 할 때마다 0입니다. 내용을 지우고 다시 시작할 수 있다면 사실 더 좋을 것입니다. 각 루프가있는 이유는 버튼을 클릭 할 때 둘 이상의 결과가 나타나는 경우가 있기 때문입니다. –

+1

확인. 각 클릭을 비울 수 있습니다. 그냥 $ ('# results')을 넣으십시오 .html (""); 클릭 이벤트의 첫 번째 줄에 –

관련 문제