关于 location.href 无法正常执行的问题

关于 location.href 无法正常执行的问题

http://img1.sycdn.imooc.com//climg/5ec514820996845004320083.jpg

http://img1.sycdn.imooc.com//climg/5ec51482091be75e09070426.jpg

代码和文件路径如上图所示,点击 “返回首页” 按钮时无法正常跳转页面,停留在当前页面。

而相同的代码在 add.php 代码文件能够正常执行,想请问老师这是为什么?谢谢!!!

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,1. 可能是环境或缓存的问题导致的。

2. form表单中< button >标签就相当于< input type=“submit” >,一点击就会提交表单;所以会出现同学描述的情况。则建议同学使用< input type=“button” >,则点击就不会提交表单,这样就可以更灵活的使用js处理一些业务。修改后代码如下所示:

<input type="button" onclick="loc_index()"  value="返回首页">

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 真鱻 2020-05-22 11:24:07

<!-- 留言板 发表/编辑 留言模板代码 -->

<div class="buttom">

<form action="#" method="post">

<table>

<tr>

<th colspan="2" class="title">发布内容</th>

</tr>

<input type="hidden" name="id" value="<?php echo isset($id)? $id:'';?>">

<tr>

<th><label>用户名:</label></th>

<th><input type="text" name="user_name" required="required" value="<?php echo isset($info)? $info['user_name']:'';?>"></th>

</tr>

<tr>

<th><label>标题:</label></th>

<th><input type="text" name="title" required="required" value="<?php echo isset($info)? $info['title']:'';?>"></th>

</tr>

<tr>

<th><label>内容:</label></th>

<th></th>

</tr>

<tr>

<th colspan="2"><textarea name="content" rows="6" cols="30" required="required"><?php echo isset($info)? $info['content']:'';?></textarea></th>

</tr>

<tr>

<th></th> 

<th>

<input type="submit" name="pubMsg" value="提交">

<button onclick="loc_index()">返回首页</button>

</th>

</tr>

</table>

</form>

</div>


<!--index.php代码-->

<!-- 

导入文件列表:

./common_fun.php:

留言板常用函数:get_msgs($filename)

./head.php:

留言板头部模块

./top.php:

留言板说明模块

./tail.php:

留言板尾部模块

 -->

<?php

require_once "./common_fun.php";


header("content-type:text/html;charset=utf-8");

date_default_timezone_set("PRC");

$filename = "../msg.txt";


$msgs = get_msgs($filename);

?>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>imooc留言板</title>

<link rel="stylesheet" type="text/css" href="../css/common.css">

<link rel="stylesheet" type="text/css" href="../css/index.css">

<script type="text/javascript" src="../js/index.js"></script>

<script type="text/javascript">

function loc_add(){

location.href = "./add.php";

}

</script>

</head>

<body onload="init()">

<? $img_src = "../img/logo.png";?>

<?php include_once "./head.php";?>


<div class="body">

<?php

$title = "慕课留言板,欢迎您!";

$introduction = "慕课网是垂直的互联网IT技能免费学习网站。以独家视频教程,在线编程工具,学习计划,问答社区为核心特色。在这里,你可以找到最好的互联网技术牛人,也可以通过免费的在线公开视频课程学习国内领先的互联网IT技术。";

?>

<?php include_once "./top.php";?>

<div class="mid">

<?php

if(is_array($msgs) && count($msgs)>0):

?>

<table>

<thead>

<tr>

<th>编号</th>

<th>用户名</th>

<th>标题</th>

<th>时间</th>

<th>内容</th>

<th>操作</th>

</tr>

</thead>

<tbody>

<?php

$i = 1; 

foreach($msgs as $key => $value):

?>

<tr>

<td>

<?php echo $i++;?>

</td>

<td>

<?php echo $value['user_name']; ?>

</td>

<td>

                 <?php echo $value['title'];?>

               </td>

               <td>

                 <?php echo date("Y/m/d H:i:s",$value['time']);?>

               </td>

               <td>

                 <?php echo $value['content'];?>

               </td>

               <td><button name="edit" value="<?php echo $key;?>">编辑</button>|<button name="delete" value="<?php echo $key;?>">删除</button></td>

</tr>


<?php endforeach; ?>

</tbody>

</table>

<?php endif; ?>

<button class="add" onclick="loc_add()">我要留言</button>

</div>

</div>


<?php include_once "./tail.php";?>

</body>

</html>

<!--index.js代码-->

/*

为每个 edit 和 delete 按钮添加相应的 onclick 事件

 */

function init(){

var edit_objs = document.getElementsByName("edit");

var delete_objs = document.getElementsByName("delete");

for(var i=0;i<edit_objs.length;i++){

edit_objs[i].onclick = function(){

fromPost("./edit.php",this.value);

}

}

for(var i=0;i<delete_objs.length;i++){

delete_objs[i].onclick = function(){

var msg = "您确认删除当前留言吗?";

if(confirm(msg) == true){

fromPost("./delete.php",this.value);

}

}

}

}


/*

生成 edit 和 delete 操作使用的表单,

表单内容包括 post 方式提交,以及用于定位需要操作留言的 id

并将其提交给相应的 php

*/

function fromPost(URL, id){

var temp = document.createElement("form");

temp.action = URL;

temp.method = "post";

temp.style.display = "none";

var input = document.createElement("input");

input.name = "op_id";

input.value = id;

temp.appendChild(input);

document.body.appendChild(temp);

temp.submit();

document.body.removeChild(temp);

}


<!--edit.php代码-->

<!-- 

导入文件列表:

./common_fun.php:

留言板常用函数:get_msgs($filename)

./head.php:

留言板头部模块

./top.php:

留言板说明模块

./buttom.php:

留言板 发表/编辑 模块

./tail.php:

留言板尾部模块

 -->


<?php

require_once "./common_fun.php";

header("content-type:text/html;charset=utf-8");

date_default_timezone_set("PRC");

$filename = "../msg.txt";

$msgs = get_msgs($filename);

/*

根据 index.php 和 edit.php 页面提交 id 的 POST 键名不同来决定是进行 留言展示 还是 编辑留言 功能。

前者键名为 op_id

后者键名为 id

*/

if(isset($_POST['op_id'])){

$id = $_POST["op_id"];

$info = $msgs[$id];

}


if(isset($_POST['pubMsg'])){

$id = $_POST["id"];

$user_name = $_POST["user_name"];

$title = strip_tags($_POST["title"]);

$content = strip_tags($_POST["content"]);

$time = time();


$new_data = compact("user_name","title","content","time");


$msgs[$id] = $new_data;

if($id == NaN){

echo "You are right!<br>";

}

$msgs = serialize($msgs);



if(file_put_contents($filename, $msgs)){

echo "

<script>

alert('编辑成功!!!');

location.href='./index.php';

</script>";

}else{

echo "

<script>

alert('编辑失败!!!');

location.href='./index.php';

</script>";

}

}

?>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Edit</title>

<link rel="stylesheet" type="text/css" href="../css/common.css">

<link rel="stylesheet" type="text/css" href="../css/edit.css">

<script type="text/javascript">

function loc_index(){

location.href = "./index.php";

}

</script>

</head>

<body onload="";>

<?php $img_src = "../img/logo.png";?>

<?php include "./head.php";?>

<div class="body">

<?php

$title = "既然来了,就说点什么吧~~~~~";

$introduction = "把你想说的话写在下面。标注好你的姓名,主题,点击提交按钮发送给我们,让小伙伴们知道你在想什么。";

?>

<?php include_once "./top.php";?>

<?php include_once "./buttom.php";?>

</div>

<?php include_once "./tail.php";?>

</body>

</html>


好帮手慕小尤 2020-05-21 18:28:32

同学你好,1. 可能是同学使用相对路径,程序未找到相应的文件导致的,同学可尝试使用好帮手慕古丽老师提供的方法,使其在一个目录下,进行测试。

2. 测试../index.php,是可以返回到上一层的index.php文件。则同学可以尝试使用./../index.php。

3. 也有可能是缓存的问题导致,同学可尝试使用Ctrl+Shift+r快捷键的方式去除缓存,然后重新测试。

4. 如果还存在问题,则建议同学以复制粘贴的方式反馈相关代码,便于老师定位问题。

祝学习愉快!

  • 提问者 真鱻 #1
    感谢老师的回复,按照老师的建议进行了修改,但是出现的新的问题,还请麻烦老师帮忙再看一下代码,找一下问题所在。另外还请老师解释一下我的两个困惑。万分感谢!!! 问题描述: 按照老师的意见,将文件放于同一个目录下。文件结构如 提问贴 所示, 只是将 index.php 放于 php 文件夹下。 现点击 返回首页 按钮,不能立即返回至 index.php 页面,而是跳转至 edit.php# 页面,页面也不再显示需要编辑留言的内容。在此页面再次点击 返回首页 内容,能正常跳回 index.php 页面。 困惑: 1.还是未能明白之前出现问题的原因,相对路径 应该没有错误,为什么不能正常跳转? 2.按照老师的建议修改后,为什么会出现上文描述的问题?
    2020-05-22 11:21:31
  • 提问者 真鱻 #2
    代码因字数问题,贴在了上面了·····麻烦老师看一下,谢谢老师
    2020-05-22 11:25:08
guly 2020-05-21 09:49:24

你好,是路径的位置不正确,建议修改为:

如老师的目录为:

http://img1.sycdn.imooc.com//climg/5ec5de0a09e29f9602890129.jpg

再add.php页面设置为

location.href="./index.php";

如果解决您的问题请采纳,祝学习愉快!

  • 提问者 真鱻 #1
    为什么路径会出现问题?如果不修改文件位置的话,location.herf应该要如何赋值呢?
    2020-05-21 10:00:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师