javascript - javascript中表单提交的返回方法

标签 javascript php html forms

开发人员我创建了一个页面,它从注册页面获取数据。我在每个数据行中放置了“添加”和“取消好友”按钮(已禁用)。用户点击添加后,会出现提示框,要求用户输入主题,然后点击确定。点击确定后,就插入到另一个数据库表中了。同时解除好友按钮就可以点击了。这里我的问题是,一旦单击“添加”按钮,就会出现提示,单击“确定”后,数据不会插入到数据库中。如果我点击取消好友按钮,它就会插入数据库。我希望每当用户单击添加按钮时提交数据。我认为这是因为这个表单有两个提交按钮,但我不知道如何区分按钮。此外,在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>

最佳答案

您的return语句终止函数; return之后没有代码将执行,所以你的 form.submit()电话永远不会发生。在你的friend函数,因为您返回 false和你的onclickreturn friend(...) ,您正在取消表单提交,并且表单永远不会提交(不是通过您的代码,也不是通过浏览器),在unfriend中不过,您将返回 true ,因此尽管您的代码不提交表单,但浏览器会提交。

如果您想以编程方式提交表单,请输入 form.submit return 之前调用,然后返回false因此浏览器也不会提交表单。

关于javascript - javascript中表单提交的返回方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51692601/

相关文章:

javascript - 重新加载然后在同一函数jquery中刷新

html - 我想在将鼠标悬停在图像上时隐藏图像并在其位置显示文本

javascript - 通过拖动标签将文本从标签复制到特定段落的单击点

Javascript 将数据插入 HTML 表格

javascript - 如何处理对google API google.maps.DistanceMatrixService.getDistanceMatrix()的多个请求?

javascript - 通过滚动位置更改元素属性

php - 如何json_encode php数组但没有引号的键

javascript - Ionic slider - 读取图像文件夹的内容

php - Laravel - 文件下载

javascript - 光滑的旋转木马上的图像随着鼠标拖动而移动