使用XMLHttpRequest在JS GET请求中传递多值失败,求解决方法
解决JavaScript GET请求多参数传递失败的问题
嘿,我一眼就发现问题啦!你的GET请求在拼接多参数时犯了两个小错误:
- 多个URL参数之间必须用
&分隔 - 字符串拼接时,
status="+status"后面缺少了+ "&"连接部分,导致两个参数直接连在一起,服务器根本没法正确解析
修正后的基础代码
<script type="text/javascript"> function updatestatus(status, id){ var xmlhttp=new XMLHttpRequest(); // 补上&分隔符,完成正确的参数拼接 xmlhttp.open("GET","adminfunction.php?status="+status+"&id="+id, false); xmlhttp.send(null); } </script>
额外优化建议
为了避免参数里的特殊字符(比如空格、中文、特殊符号)导致请求出错,建议用encodeURIComponent()对参数值进行编码:
<script type="text/javascript"> function updatestatus(status, id){ var xmlhttp=new XMLHttpRequest(); // 对参数值编码,避免特殊字符干扰 var encodedStatus = encodeURIComponent(status); var encodedId = encodeURIComponent(id); xmlhttp.open("GET","adminfunction.php?status="+encodedStatus+"&id="+encodedId, false); xmlhttp.send(null); } </script>
另外,同步请求(第三个参数设为false)会阻塞浏览器主线程,导致页面卡顿,推荐改成异步请求并处理回调:
<script type="text/javascript"> function updatestatus(status, id){ var xmlhttp=new XMLHttpRequest(); var encodedStatus = encodeURIComponent(status); var encodedId = encodeURIComponent(id); // 异步请求的回调逻辑 xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // 请求成功后的处理,比如提示更新完成 console.log("状态更新成功"); } }; xmlhttp.open("GET","adminfunction.php?status="+encodedStatus+"&id="+encodedId, true); xmlhttp.send(null); } </script>
内容的提问来源于stack exchange,提问作者TCR
相关产品推荐
相关产品推荐

