所以我想在我的HTML页面上使用按钮来调用将写入文本文件的php程序。我目前得到的是来自我的Ajax函数的成功包,但它应该写的文件不存在。
我的HTML
<button type = "button" onclick = "getRequest('changeState.php', changeState('1'), 0)"></button>
我的Javascript函数:
function getRequest(url, success, error) {
var req = false;
try{
// most browsers
req = new XMLHttpRequest();
}
catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
// try an older version
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function()
{
if(req.readyState == 4) {
return req.status === 200 ?
success(req.responseText) : error(req.status);
}
}
req.open("GET", url, true);
req.send(null);
return req;
}
function changeState(input)
{
state = input;
document.GetElementById("state_current").innerHTML = state;
}
我的PHP文件:
<?php
$f = fopen("file.txt");
fwrite($f, "Hello World");
fclose($f);
?>
我说实话,我对php很新,但我的语法似乎很好,因为我没有删除任何错误消息,我知道程序运行成功,因为我得到了成功运行的功能。我错过了一些明显的东西吗?
答案 0 :(得分:0)
成功时不会调用changeState
函数,因为您传递的是changeState
函数返回的值而不是函数引用,应该是:
<button type = "button" onclick = "getRequest('changeState.php', changeState, 0)"></button>
您还可以在开发人员工具上的“网络”选项卡上查看您是否确实将请求发送到了URL。如果您没有,那么您的网址或服务器就会出现问题。
答案 1 :(得分:0)
file.txt。如果不是,可能不允许PHP创建它。不幸的是,用户运行PHP并不容易理解,并且该用户必须有权写入服务器的webroot文件夹。据我所知,这取决于PHP的执行方式(模块与CGI)。
我会尝试将文件夹访问权限更改为&#34; 777&#34; (任何人都可以做任何事情)。