PHP实现点击链接发送带参数GET请求求助
实现方法
方法1:直接用a标签跳转(最简单,适合新手)
你现在的代码里a标签没闭合,也没输出链接文本,而且没必要用onclick,直接把href设成目标URL就行,还得对$value做URL编码(因为有空格这类特殊字符),避免URL出错。
修改后的递归函数:
function display_array_recursive($json_rec){ if($json_rec){ foreach($json_rec as $key=> $value){ if(is_array($value)){ display_array_recursive($value); }else{ // 对value做URL编码,处理空格等特殊字符 $encodedValue = urlencode($value); // 输出完整的a标签,href直接指向目标接口 echo '<a href="http://localhost/api/ticket/' . $encodedValue . '">' . htmlspecialchars($value) . '</a><br>'; } } } }
urlencode($value):把VS Code fehlt转成VS+Code+fehlt,符合URL规范htmlspecialchars($value):防止XSS,比如如果value里有<这类字符,转义后不会破坏HTML结构
点击这个链接就会直接发送GET请求到http://localhost/api/ticket/你的值,浏览器会跳转过去。
方法2:用JS发送AJAX GET请求(不跳转页面)
如果不想跳转页面,要异步发送请求,那得先把你的test函数写出来,同时注意PHP输出JS时的字符串转义(避免引号冲突):
首先修改PHP里的a标签输出:
function display_array_recursive($json_rec){ if($json_rec){ foreach($json_rec as $key=> $value){ if(is_array($value)){ display_array_recursive($value); }else{ // 用json_encode转义JS字符串,避免引号、换行等问题 $jsValue = json_encode($value); echo '<a href="#" onclick="test(' . $jsValue . '); return false;">' . htmlspecialchars($value) . '</a><br>'; } } } }
然后在HTML里加JS的test函数:
function test(value) { // 编码value,构造URL const encodedValue = encodeURIComponent(value); const url = `http://localhost/api/ticket/${encodedValue}`; // 用fetch发送GET请求 fetch(url) .then(response => { if (!response.ok) { throw new Error('请求失败'); } return response.json(); // 如果接口返回JSON,解析它 }) .then(data => { console.log('请求成功', data); // 这里可以加请求成功后的操作,比如提示用户 }) .catch(error => { console.error('请求出错', error); }); }
return false;:阻止a标签默认的跳转行为encodeURIComponent(value):和PHP的urlencode作用类似,处理URL里的特殊字符fetch是现代浏览器的API,如果要兼容老浏览器,可以用XMLHttpRequest替代
别忘了解析JSON字符串
你拿到的是JSON格式的字符串,得先转成PHP数组才能传给递归函数:
$jsonStr = '[{"betreff":"h"},{"betreff":"VS Code fehlt"}]'; $jsonArray = json_decode($jsonStr, true); // 第二个参数true转成关联数组 display_array_recursive($jsonArray);
内容的提问来源于stack exchange,提问作者durmaz
相关产品推荐
相关产品推荐

