Ajax / javascript问题,innerhtml没有变化

时间:2011-04-05 13:33:55

标签: javascript ajax

的index.php

<?php
    //grab product id's who need to be showed
    $pids = '1,2,3';
?>

<html>

<head>
    <?php include 'lol.js.php'; ?>
</head>


<body onload="update_timers();">


    <div id="timer_3183" class="timer countdown clearfix" title="1301994024"></div>

lol.js.php

<script type="text/javascript">

function update_timers()
{
    check_detail('<?=$pids?>', 'ajax.php');
}




function updatepage(str, pids)
{
      //loop through all the products, change time
      document.getElementById("timer_3183").innerHTML = document.frm.hide.value;
}

function check_detail(pids, strURL) 
{
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() 
    {
        if (self.xmlHttpReq.readyState == 4)
            updatepage(self.xmlHttpReq.responseText, pids);
            //document.getElementById("myDiv").innerHTML = self.xmlHttpReq.responseText;
    }
    self.xmlHttpReq.send("pids=" + pids); //this goes to PHP script via POST
}


</script>

ajax.php

<?php

    echo '
<form name="frm">
    <input type="hidden" name="hide" value="Some random text">
</form>';
?>

我正在尝试将索引页面中的div设置为ajax.php中的值。

不起作用的行是: document.getElementById(“timer_3183”)。innerHTML = document.frm.hide.value;

如果我用文字字符串替换它,它可以工作: document.getElementById(“timer_3183”)。innerHTML =“rand text”;

但是当我想将它设置为“document.frm.hide.value;”时表达式,页面加载时该值不会更改。

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:1)

好吧,我不知道“循环......”的评论意味着什么,但是:

  document.getElementById("timer_3183").innerHTML = str;
似乎它会做一些更有趣的事情。您要添加的表单位于XMLHttpRequest响应文本中,对吧?这就是你的“ajax.php”文件返回到浏览器的内容。在请求成功的时候,它仍然只是简单的未解析文本。通过将该文本填充到目标“drop zone”<div>的“innerHTML”属性中,可以将其提供给浏览器进行解析。完成后,表单将在<div>内。

答案 1 :(得分:0)

再次使用getElementById?即分配一些ID,说hide输入:

<input type="hidden" name="hide" value="Some random text" id="hide">

并编写如下的JS代码:

document.getElementById("timer_3183").innerHTML = document.getElementById('hide').value;