Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的onclick事件在页面加载时执行,而不是在单击按钮时执行,并且我不';我不知道为什么_Javascript_Php_Ajax - Fatal编程技术网

Javascript 我的onclick事件在页面加载时执行,而不是在单击按钮时执行,并且我不';我不知道为什么

Javascript 我的onclick事件在页面加载时执行,而不是在单击按钮时执行,并且我不';我不知道为什么,javascript,php,ajax,Javascript,Php,Ajax,我正在尝试学习如何从javascript获取一个变量,并将其发送到一个单独的php文件进行处理(我将把它放在一个数据库中)。我的第一个问题似乎是,当我点击我的成本值按钮时,函数运行,而当页面加载时,函数运行。第二个问题似乎是,我试图发送的变量(工作)实际上没有被发送。这对我来说很新鲜。有解决方案吗?您正在将onclick设置为函数的返回值,因为您正在使用括号执行函数。将()从onclick中删除,它将按预期工作 function ajax_post() { var xmlhtt

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

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

    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();
要使其正常工作,您需要确保:

此脚本正好出现在结束正文标记的前面

或者,当文档准备好用于JS时,将其包装在回调中

costButton.onclick = ajax_post; 

谢谢,但不幸的是,这对我不起作用。该功能不再在页面加载后立即运行,但在我单击按钮时也不会运行。还有其他想法吗?把你的脚本放在底部,就在
标记之前,它必须在ID为的元素被创建后加载。请告诉我,我仔细检查了我的页面,在我的代码中看到了我自己的错误,所以现在它可以正常工作了。。。再次感谢!我已经用一些关于位置和等待DOM内容准备就绪的其他信息更新了我的答案。
 document.addEventListener("DOMContentLoaded", function() {
   // Your code here
 })