使用AJAX在echo语句中不触发onClick事件

时间:2012-06-30 21:32:56

标签: php html ajax

在页面的头部使用这段代码:

<script type="text/javascript">

function vote() {

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById('results').innerHTML = xmlhttp.responseText;
        }
    } 

    xmlhttp.open('GET', 'update.inc.php', true);
    xmlhttp.send();
}
</script>

和这段HTML代码:

<a id="vote" name="vote" onClick="vote();">Link</a>

单击链接时,一切正常,执行update.inc.php并输出到屏幕。所以我知道ajax是正确的。

然而,使用这段PHP代码

echo "<form>
        <input type=\"radio\" name=\"vote\"> yes
        <input type=\"radio\" name=\"vote\"> no
        <input type=\"button\" value=\"$count\" onClick=\"vote();\">
    </form>";

单击输入按钮时,函数vote()不再触发。我在这个echo语句中做错了什么?

1 个答案:

答案 0 :(得分:4)

问题在于您的2个单选按钮名为vote,在功能vote名称和您的无线电名称之间不明确。所以只需重命名你的功能:

echo "<form>
        <input type=\"radio\" name=\"vote\"> yes
        <input type=\"radio\" name=\"vote\"> no
        <input type=\"button\" value=\"$count\" onClick=\"doVote();\">
    </form>";

function doVote() {
    ...    
}
如果您愿意,可以

或重命名您的单选按钮。