开发人员我创建了一个页面,该页面从注册页面获取数据。我在每个数据行中添加了添加和取消好友按钮(已禁用)。用户单击添加后,将出现提示框,要求用户输入主题并单击确定。单击确定后,它将插入另一个数据库表中。同时,可以单击取消交友按钮。在这里,我的问题是,一旦单击添加按钮,就会出现提示,单击确定后,数据不会插入数据库。如果单击unfriend按钮,它将插入数据库。我希望每当用户单击添加按钮时提交数据。我认为这是因为此表单有两个提交按钮,但我不知道如何区分按钮。此外,在javascript中,我按照一些教程放置了return false和true。我可能知道何时应该使用return false和true吗?。这是代码:
<?php
session_start();
$mysqli=new MySQLi('127.0.0.1','root','','learning_malaysia');
$sql = "SELECT * FROM tutor_register INNER JOIN tutorskill ON tutor_register.register_ID = tutorskill.register_ID";
$result= mysqli_query($mysqli,$sql);
?>
<html>
<script>
function myFunction(form){
var subject = prompt("Please enter Subject that want to study");
form['add'].value="request sent";
if (subject != null){
form['subject'].value= subject;
form['btn'].disabled=false;
form['add'].disabled=true;
return false;
form.submit();
}
return true;
form['add'].submit();
}
function unfriend(form){
form["add"].disabled=false;
form["btn"].disabled=true;
form["add"].value="Add friend";
return true;
form.submit();
}
</script>
<body>
<?php
if(mysqli_num_rows($result)>0)
{
while($row = mysqli_fetch_array($result))
{
$register_ID=$row["register_ID"];
?>
<form method="post" id="form" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="id" value="<?php echo $row['register_ID'];?>" />
<input type="hidden" id="subject" name="subject" data-uid=<?php echo $_SESSION['sid'] ;?>/>
<td><input type="submit" onclick="return myFunction(this.form);" name="addfriend" data-type='addfriend' id="add" class="btn" value="add" />
<input type="submit" value="unfriend" id="btn" onclick="return unfriend(this.form);" disabled /> </td> </form>
<?php
}
}
?>
<?php
if(isset($_POST['subject']) and $_POST['id']) {
$user_id = $_SESSION['sid'];
$friend_id = $_POST['id'];
$status = "yes";
$subject=$_POST['subject'];
$sql="INSERT INTO friends(user_id,status,subject,friend_id)" ."VALUES('$user_id','yes','$subject','$friend_id') ";
if($mysqli->query($sql)=== true) {
$_SESSION['status']="yes";
$_SESSION['friend_id']=$friend_id;
$_SESSION['user_id'] = $user_id;
} else {
}
}?>
</body>
</html>
答案 0 :(得分:1)
您的return
语句终止该函数; return
之后将不会执行代码 ,因此您的form.submit()
调用将永远不会发生。在您的friend
函数中,由于您要返回false
并且您的onclick
具有return friend(...)
,因此您要取消表单提交,并且表单永远不会提交(不是您提交的)代码,而不是浏览器),但是,在unfriend
中,您返回的是true
,因此尽管您的代码未提交表单,但浏览器会提交。
如果您要以编程方式提交表单,请将form.submit
之前的return
调用放在false
之前,然后返回Uncaught TypeError: Cannot read property 'selectionStart' of undefined
at Object.refresh (wplink.js:165)
at Object.open (wplink.js:138)
at HTMLInputElement.<anonymous> (media-gallery.js?ver=1.0.0:106)
at HTMLInputElement.dispatch (jquery.js?ver=1.12.4:3)
at HTMLInputElement.r.handle (jquery.js?ver=1.12.4:3)
,这样浏览器也不会提交表格。