onClick 事件未在带有 AJAX 的回显语句中触发


onClick event not firing in echo statement with 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() 不再触发。在这个回声陈述中,我做错了什么?

问题是您的 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() {
    ...    
}

或者,如果您愿意,可以重命名单选按钮。