尝试使用ajax将数据发送到OOP类

时间:2016-03-01 11:52:58

标签: javascript php jquery ajax oop

我尝试从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中的newusername

5 个答案:

答案 0 :(得分:6)

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

尝试将表单值传递给reg函数,它会很好

答案 1 :(得分:1)

您的代码问题在于您没有从表单中获取值。 您不需要将代码放在表单标记中。 使用这个表格和脚本,希望它可以帮助.....

<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
});
};
});

答案 2 :(得分:0)

尝试此功能:

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);
});
}

答案 3 :(得分:0)

试试这个

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>"; } } 方法调整为

[
  {"name": "l1", "type": "float", "mode": "nullable"},
  {"name": "l2", "type": "float", "mode": "nullable"},
]

答案 4 :(得分:0)

为避免 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.
}