【问题标题】:Trying to send data with ajax to OOP class尝试使用 ajax 将数据发送到 OOP 类
【发布时间】:2016-06-13 19:54:03
【问题描述】:

我正在尝试从 HTML 表单 -> ajax -> 实例 -> oop 类文件发送包含用户名、密码等的数据。

但我不确定我的方法是否正确......

它以 index.php

上的表单开头
 <!-- Formular for signing up -->
 <form method="post">
    <div class="form-group">
        <label> Username </label>
        <input type="text" class="form-control" name="newusername"> 
    </div>    

    <div class="form-group">
        <label> Password </label>
        <input type="password" class="form-control" name="newpassword"> 
    </div>

    <div class="form-group">
        <label> Your club </label>
        <input type="text" class="form-control" name="newclub"> 
    </div>   

   <input type="button" id="btn-reg" class="btn btn-success" value="Sign up!">

</form> 

然后它通过我的脚本文件和 ajax

$(document).ready(function () {

console.log('Script loaded...');
$("#btn-reg").on("click", reg);      


// Function for registrate of new users
function reg(newusername, newpassword, newclub) {
    $.post('classCalling.php', {
        newusername: 'newusername',
        newpassword: 'newpassword',
        newclub: 'newclub'
    });
};
});

然后我的数据将转到一个页面,classCalling.php 我在其中实例化我的类

    ?php

     include("class/userClass.php");
     include("class/pagesClass.php");



                // Creating instance of the class userClass.php
                 $user = new User();




                // Defining variables
                $newusername = $_POST['newusername'];
                $newpassword = $_POST['newpassword'];
                $newname = $_POST['newclub'];

                // Password hash
                $hashpassword = sha1($newpassword);

                $user->newUsers($newusername, $hashpassword, $newname);         


 ?>

最后是我的 OOP 课程,但我还没到这一步

 public function newUsers($newusername, $newpassword, $newclub) {

        // Using prepared statement to prevent mysql injections.
        $stmt = $this->db->prepare("INSERT INTOusers(username,password, club)VALUES(?, ?, ?);");
        $stmt->bind_param("sss", $newusername, $newpassword, $newclub);

        if($stmt->execute()) {
            echo "<h3 class='usercreated'>Användare skapad</h3>";
            } else {
                echo "<h3 class='usercreated'> Gick ej att skapa användare</h3>";
            }
}

我收到这些错误通知:未定义索引:第 13 行 /Applications/MAMP/htdocs/web 2.0/projektet/classCalling.php 中的新用户名

【问题讨论】:

  • 你也错过了 probel : "INSERT INTO users(username,pa"
  • 该问题与 OOP 无关。您必须研究数据流。
  • INSERT INTOusers( 更改为INSERT INTO users(
  • 尝试在您的classCalling.php 中使用var_dump($_POST); 打印$_POST

标签: javascript php jquery ajax oop


【解决方案1】:

我认为错误是因为您没有将任何参数传递给 reg。

尝试将表单值传递给 reg 函数就可以了

【讨论】:

  • 同意,不带参数调用“reg”... btn.on('click',reg) 部分
  • 如果他可以检查发布请求,在浏览器上打开开发控制台并打开标签网络,单击脚本并打开参数标签,在新窗口中。
  • 这实际上并没有导致Undefined Index 的这个问题。至少他应该有硬编码值'newusername'
【解决方案2】:

您的代码的问题是您没有从表单中获取值.. 您不需要将代码放在表单标签中。 使用此表单和脚本,希望对您有所帮助.....

<div class="form-group">
    <label> Username </label>
    <input type="text" class="form-control" name="newusername" id="username"> 
</div>    

<div class="form-group">
    <label> Password </label>
    <input type="password" class="form-control" name="newpassword" id="password"> 
</div>

<div class="form-group">
    <label> Your club </label>
    <input type="text" class="form-control" name="newclub" id="club"> 
</div>   

和脚本:

$(document).ready(function () {

console.log('Script loaded...');
$("#btn-reg").on("click", reg);      

var newusername=$("#newusername").val();
var newpassword=$("#newpassword").val();
var newclub=$("#club").val();

function reg() {
$.post('classCalling.php', {
    newusername: newusername,
    newpassword: newpassword,
    newclub: newclub
});
};
});

【讨论】:

    【解决方案3】:

    试试这个

        $(document).ready(function () {
          console.log('Script loaded...');
    
          $("#btn-reg").click(function(){
            var newusername = $("#username").val();
            var newpassword = $("#newpassword").val();
            var newclub = $("#newclub").val();
    
            $.ajax({
              method: "POST",
              url: "classCalling.php",
              data: { newusername: newusername,newpassword: newpassword,newclub: newclub },
             success:function(data){
                alert(data);
             }
    
          });
         });
    
    });
    

    并将您的newUsers() 方法调整为

     public function newUsers($newusername, $newpassword, $newclub) {
    
            // Using prepared statement to prevent mysql injections.
            $stmt = $this->db->prepare("INSERT INTO  users(username,password, club)VALUES(?, ?, ?);");
            $stmt->bind_param("sss", $newusername, $newpassword, $newclub);
    
            if($stmt->execute()) {
                echo "<h3 class='usercreated'>Användare skapad</h3>";
                } else {
                    echo "<h3 class='usercreated'> Gick ej att skapa användare</h3>";
                }
    }
    

    【讨论】:

      【解决方案4】:

      试试这个功能:

      function reg() {
      var newusername=$(this).val();
      var newpassword=$(this).val();
      var newclub=$(this).val();
      
      $.post('classCalling.php', {
          newusername: newusername,
          newpassword: newpassword,
          newclub: newclub
      },function(data){
       console.log(data);
      });
      }
      

      【讨论】:

        【解决方案5】:

        为避免您的 classCalling.php 文件中出现错误,请始终检查您尝试获取的 POST 值是否已设置。 检查下面的代码

        <?php
        include("class/userClass.php");
        include("class/pagesClass.php");
        
        // Creating instance of the class userClass.php
        $user = new User();
        
        if(isset($_POST['username']) && isset($_POST['password']) && isset($_POST['newclub'])){
        
            $username = $_POST['username'];
            $password = $_POST['password'];
            $newclub = $_POST['newclub'];
        
            $hashpassword = sha1($newpassword);
            $user->newUsers($newusername, $hashpassword, $newname); 
        
        }else{
            // handle your request when POST parameters are missing.
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-16
          • 2013-09-14
          • 2015-01-08
          • 1970-01-01
          相关资源
          最近更新 更多