多框架在线杂货商城传值异常:点击Add按钮后提示URL未找到
问题排查与解决方案
先直接点明导致「url not found」的核心问题,再逐一梳理其他潜在隐患:
1. 表单action的引号使用错误(核心原因)
你右上框架的表单代码里,action=“bottom_right.php”用了中文双引号「“”」,浏览器会把这些中文引号当成URL的一部分,导致实际请求的路径变成类似%E2%80%9Cbottom_right.php%E2%80%9D(中文引号的URL编码),服务器自然找不到这个不存在的文件。
修复方法:把中文引号换成英文双引号或单引号:
echo ' <div> <form action="bottom_right.php" method="get" target="bottom_right"> <input name="id" value="'.$product_id.'"> <input type="submit" value="Add"> </form> </div>';
2. 变量$product_id可能未正确赋值
输出表格时你用的是$row[product_id]显示商品ID,但表单里调用的是$product_id变量。如果代码里没有提前把$row['product_id']赋值给$product_id,这个input的value会是空值——虽然这不会导致404,但会让右下框架拿不到正确的商品ID。
修复方法:要么提前赋值变量,要么直接在input里使用查询结果:
// 方式1:提前赋值 $product_id = $row['product_id']; // 方式2:直接在input中使用查询结果 echo ' <div> <form action="bottom_right.php" method="get" target="bottom_right"> <input name="id" value="'.$row['product_id'].'"> <input type="submit" value="Add"> </form> </div>';
另外建议给数组索引加上引号($row['product_id']而非$row[product_id]),避免PHP把未定义的索引解析成常量,引发潜在警告。
3. 确认文件路径是否匹配
如果修复引号后仍出现404,要检查bottom_right.php是否和当前右上框架的PHP文件在同一目录:
- 若不在同一目录,需写正确的相对路径,比如右上框架文件在
/shop/top_right/,右下框架文件在/shop/,则action应写为../bottom_right.php - 也可以使用基于网站根目录的绝对路径,比如
/shop/bottom_right.php
额外开发建议:开启PHP错误提示
开发阶段可以在PHP文件顶部添加以下代码,方便排查变量未定义、语法错误等问题:
error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者张剑桥
相关产品推荐
相关产品推荐

