2016-09-07 2 views
1

여러 기사와 질문을 읽었습니다. AJAX를 사용하여 매 X 분마다 검사하여 데이터베이스의 값을 사용하여 easypiechart를 업데이트하는 PHP 페이지가 있습니다. 이 예제에서는 변경된 사항을 알리는 경고 상자를 사용하여 시간을 10 초로 줄였습니다.attr()을 사용하여 Jquery를 변경하면 객체 객체가 반환됩니다.

attr()을 사용하여 "데이터 - 퍼센트"를 볼 수 있지만 "데이터 - 퍼센트"속성의 값을 변경하려고하면 "객체 객체"를 반환합니다.

저는이 함수가 대체품으로 ajax 응답을 추가하기 전에 작동 할 때까지 당분간 90으로 값을 수동으로 변경하려고합니다.

코드 :

<!-- Link to Google CDN's jQuery + jQueryUI; fall back to local --> 
<div id="test" class="easy-pie-chart txt-color-blue easyPieChart" data-percent="38" data-pie-size="160"> 
    <span class="percent percent-sign txt-color-blue font-lg semi-bold"></span> 
</div> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script> 
    if (!window.jQuery) { 
     document.write('<script src="js/libs/jquery-2.1.1.min.js"><\/script>'); 
    } 
</script> 

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<script> 
    if (!window.jQuery.ui) { 
     document.write('<script src="js/libs/jquery-ui-1.10.3.min.js"><\/script>'); 
    } 
</script> 

<script> 
// Setup AJAX request --> 
function updateWidgets(){ 
    $.ajax({ 
     url: "widgetGet.php", 
     type: "POST", 
     success: function(data) { 
     var response = $.parseJSON(data); 
     var idea = parseInt(response.test); 
     var ID = $("#test").attr("data-percent"); 
     var IDchange = $("#test").attr("data-percent", 90); 
     alert(ID); 
     } 
    }); 
    } 

    updateWidgets(); 
    setInterval(updateWidgets, 10000); 
    </script> 

내 문제가 위치를 볼 수 있습니다 IDchange하는 ID에서 경고를 전환합니다. 제가 위대한 공동체의 손에 있음을 아는 것에 감사드립니다.

업데이트, 디버깅에 경고 기능을 사용해서는 안됩니다. 문제점 (그리고 attr()이 확실하지 않은지)이 해결책인지는 10 초마다 시작되는 AJAX 응답을 사용하여 html 속성을 업데이트하는 것입니다. this과 같은 문서는 attr()을 사용하여 속성이 업데이트되었음을 ​​보여 주며 혼란을 낳습니다.

즉, 10 초마다 데이터를 수신하는 AJAX를 사용하여 easypiechart가 포함 된 div의 html 속성을 어떻게 업데이트 할 수 있습니까?

+1

음, 그래, 모든 jquery 메서드가 세터로 사용될 때 그 기능을 수행합니다. http://api.jquery.com/attr –

+1

디버깅에'alert()'를 사용하면 안됩니다. 모든 것을 문자열로 강제하고 UI 스레드를 차단합니다. 항상'console.log' 또는'console.dir'을 사용하십시오. –

+1

jQuery'.data()'메소드는 속성과 직접적으로 속이는 것이 바람직하다고 생각합니다. – Pointy

답변

1

을 기사의 톤을 읽은 후 나는 발견 그 대답은 easypiecharts 자체였습니다. easypiecharts와 관련된 JS는 데이터 속성을 다룰 것입니다. easypiecharts의 설명서를 읽고 난 답을 발견

$('#test').data('easyPieChart').update(90); //to update the chart to 90% 

내 문제는 기사의 톤이 ATTR() 함수를 참조하고 같은 문제를 해결하는 방향이었다. 필자의 시나리오에서, attr() 함수는 시각적으로 업데이트를보기 위해 차트를 새로 고치지 않는 한 차트를 업데이트하지 않으며 prop()도 업데이트하지 않습니다. 이 기사는 다른 외부 JS 파일과 관련이없는 요소에서이 함수를 참조했습니다.

여러분의 기여에 감사 드리며 오늘 중요한 교훈을 배웠습니다. 누군가가 AJAX 및 easypiecharts에서 동적 백분율 업데이트를 사용하고자하는 사람들에게이 답변이 도움이되기를 바랍니다.

3

.attr() 함수는 두 개의 인수로 호출 될 때 jQuery 객체를 반환합니다. 즉, $("#test")의 값이 반환됩니다. 당신이 후 그 변화 값 을보고 싶은 경우

$("#test").attr("foo", "bar").hide(); 

등의 작업을 수행 할 수 있도록

는 않습니다 :

var IDchange = $("#test").attr("data-percent", 90).attr("data-percent"); 
+0

@ wick-12c 어쩌면 당신은 [Fluen Interface] (https://en.wikipedia.org/wiki/Fluent_interface)에 익숙하지 않을 것입니다. 그리고 제가 생각하기에이 대답을 이해하는 것이 유용 할 수 있습니다 :) –

+0

@GerardBrull 아니오 저는 아닙니다 Fluen과 좋은 점을 잘 알고 있습니다. –

+0

아주 좋은 답변 Pointy 그리고 당신에게 upvote 줄 싶지만 아직이 자격이되지 않습니다. 사람들이 attr()을 사용하여 속성을 확인하고 변경하기도했지만 분명히 함수에 대한 오해가 있음을 알았습니다. –

관련 문제