js将远程div内容变为变量

时间:2015-02-09 10:23:15

标签: javascript jquery html ajax

我有一个网页,其中我放置了我的webservice任务的状态。它看起来像这样:

<body>
    <div id="size">
        <c:out value="${size}"/>
    </div>
    <div id="isRunning">
        <c:out value="${isRunning}"/>
    </div>
    <div id="intIsRunning">
        <c:out value="${intIsRunning}"/>
    </div>
    <div id="status">
        <c:out value="${status}"/>
    </div>
</body>
渲染后

我得到了这个:

<body>
    <div id="size">
        100
    </div>
    <div id="isRunning">
        false
    </div>
    <div id="intIsRunning">
        0
    </div>
    <div id="status">
        0
    </div>
</body>

size是作业的大小,可以是任何int值。 isRunningtruefalseintIsRunning10status是完成工作的百分比。

我希望能够获取这些ID的内容并将其放入我的其他网页上的js变量中,但我并不是自己的爱好者。 现在我有这个:

$(document).ready(function() {
    $('.progress .bar').progressbar();
    var fetch = setInterval(loadStatus, 500);
    var isRunning;

    function loadStatus() {
        $.get('/status #intIsRunning', function (data) {
            console.log(data);
            console.log("!");
            console.log("--->("+$(data).index("#status")+")");
        });

        isRunning = 0;
        console.log(">>" + isRunning);
        // console.log($('.progress .bar').prop(['data-transitiongoal']));
        // $('.progress .bar').prop(['data-transitiongoal']).load('/status #status');
        // $('.progress .bar [data-transitiongoal]').load('/status #status');
        // $('.bar').attr('data-transitiongoal', i.toString());
        // console.log("progress: "+progress);
        if (isRunning == 0) {
            clearInterval(fetch);
        }
    }
});

只要running为true,此脚本应查询我的状态页面以获取上述值并将状态放入我的进度条。如果运行为false,则此脚本应该停止,但是现在我无法提取这些变量。有人可以提供帮助吗? 编辑: 我让它以这种方式工作:

<script type = text/javascript>
            $(document).ready(function () {
                $('.progress .bar').progressbar();
                var fetch = setInterval(loadStatus, 500);
                var isRunning;
                var status;

                function loadStatus() {
                    $.get('/status', function (data) {
                        var remoteContent = $(data);
                        isRunning = parseInt($(remoteContent[11]).html());
                        status = parseInt($(remoteContent[13]).html());

                        if (isRunning == 0) {
                            status = 100;
                            clearInterval(fetch);
                            $("#progBar").hide();
                            $("#buttonDiv").hide();
                            $("#succesMessage").show();
                            //location.reload();
                        }

                        $('.progress .bar').attr("data-transitiongoal", status.toString()).progressbar();
                        console.log("isRunning: " + isRunning + " status: " + status + "%");
                    });
                }}
            );
        </script>

我将在本周晚些时候检查发布的答案。

1 个答案:

答案 0 :(得分:0)

如果你尝试这样的话怎么办?

$(document).ready(function() {
  var fetch = setInterval(loadStatus, 500);
  $('.progress .bar').progressbar();

  function loadStatus() {
    $.get('/status', function (data) {
      var $data = $(data), //turn ajax response (string) into JQuery collection
        isRunning = $data.find('#isRunning').text(),
        intIsRunning = $data.find('#isRunning').text(),
        size = $data.find('#isRunning').text(),
        status = $data.find('#isRunning').text();

      //Do something with the variables


      if (isRunning == 0) {
        clearInterval(fetch);
      }
    });
  }
});

请注意,变量都是字符串。例如,您可以使用status = parseInt(status, 10)转换为数字,或使用isRunning = (isRunning != 'false')转换为布尔值。请注意,使用javascript的隐式类型转换时,通常不需要这样做。