count按钮使用纯javascript Ajax将当前页面URL传递给php变量
我尝试使用纯javascript Ajax将当前页面URL(count按钮使用纯javascript Ajax将当前页面URL传递给php变量,javascript,php,ajax,Javascript,Php,Ajax,我尝试使用纯javascript Ajax将当前页面URL(window.location.href)传递给php变量$\u请求['URL']。我做错了什么 Counter.js: “严格使用”; let clicks=document.querySelectorAll('.Counter trigger');//IE8 let voted=localStorage.getItem('voted'); 让message=document.getElementById('Counter-messa
window.location.href
)传递给php变量$\u请求['URL']
。我做错了什么
Counter.js:
“严格使用”;
let clicks=document.querySelectorAll('.Counter trigger');//IE8
let voted=localStorage.getItem('voted');
让message=document.getElementById('Counter-message');
let count=document.getElementById('Counter-count');
让我;
让url;
让邮政;
让xhr;
for(设i=0;i
CounterReq.php
$url=$\u请求['url'];//从第页发布
$origin=$\u SERVER['DOCUMENT\u ROOT'].解析url($url,PHP\u url\u路径);
$file='_Counter.txt';//计数保存在此文档中
$file_path=$origin.“\u Counter.txt”;//计数保存在这里
$count=文件获取内容($file\u路径);
如果($count==null){$count=0;echo$count;
}
$count++;//按1递增计数
$handle=fopen($file_路径,“w+”);
羊群($handle,LOCK_EX);//LOCK_EX(2)写入访问的独占锁定
fwrite($handle,$count);
羊群($handle,LOCK_UN);//LOCK_EX(3)释放锁
fclose($handle);//关闭文件
index.php
投票
“.$count.”次
console.log:
注意:未定义索引:第5行/var/www/dist/lib/Counter/CounterReq.php中的url注意:未定义的索引:第5行/var/www/dist/lib/Counter/CounterReq.php中的url 此通知意味着您正在查找不存在的关联数组中的索引。
让我们来解决这个问题 将要发送的数据存储在
FormData
对象中
let url = window.location.href;
const data = new FormData()
data.set('url', url);
将“内容类型”修改为“多部分/表单数据”
或将其删除。FormData
实例将自动设置正确的标题
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
使用.Send
方法将数据发送到服务器
xhr.send(data);
使用$\u POST
全局数组而不是$\u GET
,您通过POST
方法发送数据,因此它将位于前者中
您发送到服务器的数据现在已作为关联数组处理。检查url
的键是否存在于中,如果存在,则将其存储
$url = isset( $_POST['url'] ) ? $_POST['url'] : '';
注意:未定义的索引:第5行/var/www/dist/lib/Counter/CounterReq.php中的url
此通知意味着您正在查找不存在的关联数组中的索引。让我们来解决这个问题 将要发送的数据存储在
FormData
对象中
let url = window.location.href;
const data = new FormData()
data.set('url', url);
将“内容类型”修改为“多部分/表单数据”
或将其删除。FormData
实例将自动设置正确的标题
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
使用.Send
方法将数据发送到服务器
xhr.send(data);
使用$\u POST
全局数组而不是$\u GET
,您通过POST
方法发送数据,因此它将位于前者中
您发送到服务器的数据现在已作为关联数组处理。检查url
的键是否存在于中,如果存在,则将其存储
$url = isset( $_POST['url'] ) ? $_POST['url'] : '';
您需要对要发送的变量进行URL编码并命名;换岗
let post = 'url=' + encodeURIComponent(url);
它应该很好用
编辑:我没有注意到您使用的是\u GET
数组而不是\u POST
。正如另一个答案所说,也要做出改变
但是,没有必要使用JSON
application/x-www-form-urlencoded
也可以正常工作。您需要对要发送的变量进行urlencode编码并命名;换岗
let post = 'url=' + encodeURIComponent(url);
它应该很好用
编辑:我没有注意到您使用的是\u GET
数组而不是\u POST
。正如另一个答案所说,也要做出改变
但是,没有必要使用JSON
application/x-www-form-urlencoded
也很好。对不起,这是我的错误;这个问题不正确。现在:$\u REQUEST['url']而不是$\u GET['url']对不起,这是我的错误;这个问题不正确。现在:$\u REQUEST['url']而不是$\u GET['url']谢谢,我接受了你的建议。除其他外,我删除了//xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');工作很好。谢谢,我接受了你的建议。除其他外,我删除了//xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');它的工作很好。