我的onclick事件在页面加载时执行,而不是在单击按钮时执行,我不知道原因

时间:2015-11-16 07:55:46

标签: javascript php ajax

    function ajax_post() {

    var xmlhttp=new XMLHttpRequest();
    var working='working';
    xmlhttp.open("POST","process_form.php",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            // success
            var return_data = xmlhttp.responseText;
            document.getElementById("status").innerHTML = return_data;
        }
    }

xmlhttp.send(working);
alert("The ajax function is running!");
document.getElementById("status").innerHTML = "Processing. Please wait...";

}

var costButton = document.getElementById('cost-value');

costButton.onclick = ajax_post();

我试图学习如何从javascript中获取变量并将其发送到单独的php文件进行处理(我将把它放在数据库中)。我的第一个问题似乎是,当我点击我的成本价值按钮时运行的功能,而不是在页面加载时运行,第二个问题似乎是我尝试发送(工作)的变量没有'实际上是发送。这对我来说很新鲜。任何解决方案?

1 个答案:

答案 0 :(得分:2)

您正在将onclick设置为函数的返回值,因为您正在使用括号执行函数。从()中移除onclick,它将按预期工作。

costButton.onclick = ajax_post; 

为了实现这一目标,您需要确保:

此脚本出现在结束正文标记</body>之前 或者你把它包装在文件为JS准备好的回调中。

 document.addEventListener("DOMContentLoaded", function() {
   // Your code here
 })