Кто-нибудь может помочь? Я создаю проект для uni и, похоже, получаю ошибки.

На моей веб-странице постоянно появляется следующая ошибка: Uncaught ReferenceError: Авторы не определены

Буду признателен, если кто-нибудь поможет с этим. Я использовал html, php и javascript. (тоже тонкий)

Я покажу свой код ниже:

W3_post.html

    <!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="w3.js"></script>
    <script src="https://scm.ulster.ac.uk/zhiwei.lin/js/jquery.tmpl.min.js"></script>
</head>
<body>

    <div id="authors">
        <ul id="authors_list"></ul>
    </div>

    <div class="mainArea">
        <label>Author:</label>
        <input type="text" id="author" name="name" required>


        <button id="btnSave">Save</button>
        <button id="btnUpdate">Update</button>
    </div>

    <p>Click Here to Delete Last Author
        <button id="btnDelete">Delete</button></p>
</body>
</html>

Api.php

    <?php

require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
use Slim\Slim;
$app=new Slim();
$app->get('/authors','getAuthors');
$app->post('/authors','addAuthor');
$app->get('/authors/:id','getAuthor');
$app->put('/authors/:id','updateAuthor');
$app->delete('/authors/:id', 'deleteAuthor');
$app->run();

function deleteAuthor($id) {
$sql = "DELETE FROM authors WHERE id=:id";
try { 

    $db = getConnection();
    $stmt = $db->prepare($sql);
    $stmt->bindParam("id", $id);
    $stmt->execute();
    $db = null;

    responseJson("Deleted",200);

    }catch(PDOException $e) {

    responseJson('{"error":{"text":'.$e->getMessage().'}}',500);
}}


function updateAuthor($id) {
$request = Slim::getInstance()->request();
$body = $request->getBody();
$authors = json_decode($body);
$sql = "UPDATE authors SET Author=:Author WHERE id=:id";
try { 
$db = getConnection();
            $stmt = $db->prepare($sql);
            $stmt->bindParam("Author", $authors->Author);
            $stmt->bindParam("id", $id);
            $stmt->execute();
            $db = null;
    responseJson("Updated",200);
} catch(PDOException $e) { 

responseJson('{"error":{"text":'.$e->getMessage().'}}',500);

} }


function getAuthor($id) {
$sql = "SELECT * FROM authors WHERE id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("id", $id);
$stmt->execute();
$authors = $stmt->fetchObject();
$db = null;
responseJson(json_encode($authors),200);
} catch(PDOException $e) {
        responseJson('{"error":{"text":'.$e->getMessage().'}}',500);
}
}


function getAuthors(){

$sql = "select * FROM authors ORDER BY id";

    try {

        $db = getConnection();
        $stmt = $db->query($sql);
        $authors = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        responseJson('{"authors":'.json_encode($authors).'}',200);
    }catch(PDOException $e){

        responseJson('{"error":{"text":'.$e->getMessage().'}}',500);

    }


    }


function addAuthor(){

    $request = Slim::getInstance()->request();
    $authors=json_decode($request->getBody());
    $sql= "INSERT INTO authors (Author) 
    VALUES (:Author)";

    try {

        $db = getConnection();
        $stmt = $db->prepare($sql);
        $stmt->bindParam("Author", $authors->Author);
        $stmt->execute();
        $authors->id=$db->lastInsertId();
        $db = null;
        responseJson(json_encode($authors),201);
    }catch(PDOException $e) {

        responseJson('{"error":{"text":'.$e->getMessage().'}}',500);

    }

    }


function getConnection(){
    $dbhost="localhost";
    $dbuser="B00657229";
    $dbpass="9wz7Fr9H";
    $dbname="B00657229";
    $dbh= new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser,$dbpass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    return $dbh;

}


function responseJson($responseBody,$statusCode){
    $app = Slim::getInstance();
    $response = $app->response();
    $response['Content-Type']='application/json';
    $response->status($statusCode);
    $response->body($responseBody);

}


?>

W3.js

    $(document).ready(function(){

   $.ajax({
        type: 'GET',
        dataType: "json",
        url: "api.php/authors",
        success: showAllAuthors,
        error: showError
    }); 

});

function showAllAuthors(responseData) {
    $.each(responseData.authors,function(index,authors){
        $("#authors_list").append("<li type='square'> author:"+authors.author+"");
        $("#authors_list").append("</li>");
    });
}
function showError(){
    alert("Sorry, there was a problem!");
}

$(document).ready(function(){
    $("#btnSave").click(function(){
        var authors = new Authors($("#author").val());


            $.ajax({
            type: 'POST',
            dataType: "json",
            url: "api.php/authors",
            data:JSON.stringify(authors),
            success: showResponse,
            error: showError
        });
    });
});

function authors(author){
    this.author=author;

}

function showResponse(responseData) {
    console.log(responseData);
}

function showError() {
    alert("Sorry, there was a problem!");
}

$(document).ready(function(){

   $.ajax({
        type: 'GET',
        dataType: "json",
        url: "api.php/authors/1296",
        success: showResponse,
        error: showError
    }); 

});

$(document).ready(function(){
    $("#btnUpdate").click(function(){
        var authors = new author($("#author").val());

        $.ajax({
            type: 'PUT',
            dataType: "json",
            url: "api.php/authors/1296",
            data:JSON.stringify(authors),
            success: alert("Updated!")
        });
    });
});

$(document).ready(function(){
    $("#btnDelete").click(function(){
        var authors = new author($("#author").val());
        $.ajax({
            type: 'DELETE',
            dataType: "json",
            url: "api.php/authors/1296",
            data:JSON.stringify(authors),
            success: alert("Deleted!")
        });
    });
});
0
Niamh Flannery 13 Мар 2018 в 23:23

2 ответа

Лучший ответ

Вам не нужно создавать объект только для одного значения. Вместо этого передайте автора прямо в атрибут data вашего вызова ajax следующим образом:

data:{author: $("#author").val()},

  $(document).ready(function(){

   $.ajax({
        type: 'GET',
        dataType: "json",
        url: "api.php/authors",
        success: showAllAuthors,
        error: showError
    }); 

});

function showAllAuthors(responseData) {
    $.each(responseData.authors,function(index,authors){
        $("#authors_list").append("<li type='square'> author:"+authors.author+"");
        $("#authors_list").append("</li>");
    });
}
function showError(){
    alert("Sorry, there was a problem!");
}

$(document).ready(function(){
    $("#btnSave").click(function(){
          // var authors = new author($("#author").val());
            $.ajax({
            type: 'POST',
            dataType: "json",
            url: "api.php/authors",
            data:{author: $("#author").val()},
            success: showResponse,
            error: showError
        });
    });
});

function authors(author){
    this.author=author;

}

function showResponse(responseData) {
    console.log(responseData);
}

function showError() {
    alert("Sorry, there was a problem!");
}

$(document).ready(function(){

   $.ajax({
        type: 'GET',
        dataType: "json",
        url: "api.php/authors/1296",
        success: showResponse,
        error: showError
    }); 

});

$(document).ready(function(){
    $("#btnUpdate").click(function(){
        //var authors = new author($("#author").val());

        $.ajax({
            type: 'PUT',
            dataType: "json",
            url: "api.php/authors/1296",
            data:{author: $("#author").val()},
            success: alert("Updated!")
        });
    });
});

$(document).ready(function(){
    $("#btnDelete").click(function(){
        //var authors = new author($("#author").val());
        $.ajax({
            type: 'DELETE',
            dataType: "json",
            url: "api.php/authors/1296",
            data:{author: $("#author").val()},
            success: alert("Deleted!")
        });
    });
});
0
Luis felipe De jesus Munoz 13 Мар 2018 в 20:45

Похоже, что в вашем JavaScript нет класса (функции) «Авторы». Ваш код создает здесь новый экземпляр объекта Authors var authors = new Authors($("#author").val());, но в настоящее время он не существует.

0
BSK 13 Мар 2018 в 20:34