单击表单提交

时间:2015-06-11 15:37:23

标签: javascript jquery

我遇到了这个登录系统的问题,当我点击登录按钮或注册按钮时,它会将我重新指向一个带有写入的白页,据说它干扰了我的日志在行动。

以下是我认为导致问题的代码,

  <form method="POST" action="" accept-charset="UTF-8">

在HTML代码的第16行,我试图取出该代码并停止重定向,但文本框不合适,并且白色背景/背景框也不存在,

链接, HERE

2 个答案:

答案 0 :(得分:2)

如果这是一个纯粹的Javascript,你想使用preventDefault():你应该能够在创建它时将按钮按下事件传递给监听器:

$('.login').on('click', function(e) {
  e.preventDefault();
  // Will be executed on press
}
<form method="POST" class="login" accept-charset="UTF-8">

如果在这种情况下没有JS参与,那么你想完全摆脱动作参数 - 将其保留为空字符串仍然会导致它在某些情况下重定向。

答案 1 :(得分:0)

正如Jonathan Lonowski上面所解释的那样,当点击登录 / 注册按钮时,表单会将数据发布到{{1}中提到的页面}属性。由于此表单标记中的此属性为空,因此它将重新加载同一页面,并将数据发布到自身。

数据将以action=变量对的形式到达。变量值将是字段的内容,变量名称将是元素上key=value属性的值。

例如,对于此字段:

name=""

将收到如下数据:

<input id="fname" name="first" value="Bobby" />

在包含表单的页面上,在顶部添加一个部分,如下所示:

$fn = $_POST['first']; //value is Bobby, or whatever user enters

这就是你处理普通HTML <?php if (isset($_POST['fname']) == true){ $fn = $_POST['fname']; echo "Received First Name: " . $fn; die(); }else{ ?> //Your current page, in its entirety, goes here <?php } //close the PHP if statement ?> 构造的方法。

但是,如果您希望使用AJAX与PHP文件进行通信而不更改页面,则:

(1)不需要使用<form>构造,只需使用带有输入按钮的DIV:<form>

(2)使用标准js / jQuery捕捉按钮按下:

<input type="button" id="sub_btn" value="Submit" />

在PHP处理器文件中,将收到数据:

$('sub_btn').click(function(){
    var fn = $('#first').val();
    //etc.

    $.ajax(function(){
        type: 'post',
         url: 'my_php_processing_file.php',
        data: 'fname=' +fn+ '&lname=' etc
    });
});

(3) IF 您确实使用了表单构造,您仍然可以执行上述所有操作,但您需要禁止导航到{{1中指定的页面的默认表单操作属性(<?php $fn = $_POST['fname']; $ln = $_POST['lname']; //Do your MySQL lookup here... echo 'Received ' .$fn. ' ' .$ln; 的属性设置会将数据发布到您正在的页面并重新加载。)

要取消导航到action=中指定的页面(包括页面刷新,即使只是action=""),请使用action=,如下所示:

action=""