从单页提交PHP查询?

时间:2014-06-12 04:41:01

标签: javascript php jquery sql forms

我目前正在尝试创建一个可以创建用户帐户并将其保存到数据库中的表单。我创建表单的页面是通过jQuery .load函数调用的,所以我需要我的表单在单个页面中操作,但我不确定如何? 此表单在一个页面上,我们称之为注册页面。然后它调用了另一个页面上的controller.php的动作,我该如何避免这个问题呢?

<form id="controlForm" name="controlForm" method="post" action="controller.php">
  <table width="300" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
      <th>First Name </th>
      <td><input name="fname" type="text" class="textfield" id="fname" /></td>
    </tr>
    <tr>
      <th>Surname </th>
      <td><input name="sname" type="text" class="textfield" id="lname" /></td>
    </tr>
    <tr>
      <th width="124">Login</th>
      <td width="168"><input name="login" type="text" class="textfield" id="login" /></td>
    </tr>
    <tr>
      <th>Password</th>
      <td><input name="password" type="password" class="textfield" id="password" /></td>
    </tr>
    <tr>
      <th>Confirm Password </th>
      <td><input name="cpassword" type="password" class="textfield" id="cpassword" /></td>
    </tr>
    <tr>
      <td><input name="ip" type="hidden" class="textfield" id="ip" value="<?php
      function ip(){if (!empty($_SERVER['HTTP_CLIENT_IP'])){$ip=$_SERVER['HTTP_CLIENT_IP'];}else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];}else{$ip=$_SERVER['REMOTE_ADDR'];}return $ip;}
$ip = ip();
/* Gathering Data Variables */
    $ip = $ip;
    echo($ip)
  ?>"/></td>
      <td><input type="submit" name="Submit" value="Create Account" /></td>
    </tr>
  </table>
</form>

清理控制器页面上的所有变量后,他们按如下方式创建查询:

$qry = "INSERT INTO control(login, type, verify, vcode, passwd, ip, cDate, first_name, surname,uID) VALUES('$login','$type','$verify', '$vCode','".md5($_POST['password'])."','$ip','$cdate','$fname','$sname','AC-$uid')";
$result = @mysqli_query($GLOBALS["___mysqli_ston"], $qry);
//Check whether the query was successful or not
if($result) {
    header("location: #/Created");
    exit();
}else {
    echo("Creation Failure");
}

这是来自第二页的一些脚本,但实质上,我将如何从控制器页面加载所有内容以在通过jQuery调用的一个页面上创建此表单

3 个答案:

答案 0 :(得分:1)

试试这个,

$('body').on('#controlForm','submit',function(e){
 e.preventDefault();
 //Initate ajax 
 var actionUrl = $(this).attr('action'); //get the action of the form
 var data = $(this).serialize();

  $.ajax({
      url : actionUrl,
      type: 'post',
      data: data,
      success: function(){
         //Do What you want after submit
      } 
 }); //added spacing 

答案 1 :(得分:0)

如果我理解正确,您想使用ajax发布数据并获得响应,然后根据响应更改页面?

所以你想要像这样阻止表单提交默认

$('#controlForm').on('submit',function(e){ //Here added single quote
     e.preventDefault();
     //Initate ajax 
     var url = $(this).attr('action'); //get the action of the form

      $.ajax({
          url : url,
          type: 'post',
          data: { /*get data from form and put it here */ },
          success: function(){
             //Do success logic, hooray user signed up!
          } 
});

然后只需通过ajax发送您的表单。 我相当肯定你不想这样做。 我不是专家,但我相信发送密码和电子邮件注册 通过ajax是不好的做法。

如果您不了解ajax,请查看jQuery文档。

希望我能理解你的问题!

答案 2 :(得分:0)

<强> JS

$('#submit').on('click', function() {
    var input1 = $('#input1').val();
    ...

    $.post('myPHP.php', {sendInput1: input1 ...})
        .done(function(result) {
            console.log(result);
        });
});

$('#submit').on('click', function() {
    var form = $('form').serialize();

    $.post('myPHP.php', {all: form})
        .done(function(result) {
            console.log(result);
        });
});

<强> PHP

$input1 = (isset($_POST['input1'])) ? $_POST['input1'] : die('Not provided the input1');
...