lundi 12 août 2019

Support ticket in ExpressJS

im new to javascript. im trying to have it send the username, email, subject, reason to a database. it would say "Cannot POST /support" but i now it just doesnt do anything.

redirecting where it renders the page, tried on phone and PC.

<form method="POST" action="/support">
          <div class="card">
            <div class="card-header">
              <h5 class="title">Submit a ticket</h5>
            </div>
            <div class="card-body">
              <div class="row">
                <div class="col-md-11 pr-md-1">
                  <div class="form-group">
                    <label>Username</label>
                    <input type="text" name="username" class="form-control" placeholder="<%=user[0].username%>" disabled="" value="<%=user[0].username%>">
                  </div>
                </div>
              </div>
              <div class="row">
                <div class="col-md-11 pr-md-1">
                  <div class="form-group">
                    <label for="exampleInputEmail1">Email</label>
                    <input type="email" name="email" value="<%=user[0].email%>" class="form-control" placeholder="<%=user[0].email%>" required>
                  </div>
                </div>
              </div>
              <div class="row">
                <div class="col-md-11 pr-md-1">
                  <div class="form-group">
                    <label for="exampleInputEmail1">Subject</label>
                    <input class="form-control" placeholder="Deposit failed" name='subject' required>
                  </div>
                </div>
              </div>
            </div>
            <div class="row" style="margin-left: 7px;">
              <div class="col-md-11">
                <div class="form-group">
                  <label>Reason</label>
                  <textarea rows="4" cols="80" class="form-control" placeholder="Description" value="Mike" name='reason' required></textarea>
                </div>
              </div>
            </div>
            <div class="card-footer" style="text-align:center;">
              <button type="submit" class="btn btn-fill btn-primary">Send</button>
            </div>                 
          </div>
        </form>

exports.ticket = function(req, res) {
    var ID = req.session.userID;
    if(ID != null) {
        res.redirect("/support");
        return;
    }

    if (req.method == "POST") {
        var post = req.body;
        var name = post.user;
        var email = post.email;
        var subject = post.subject;
        var reason = post.reason;
        var sql="INSERT INTO tickets (`username`, email, reason) VALUES ("+sqlEsc.escape(name)+", "+sqlEsc.escape(email)+", "+sqlEsc.escape(subject)+", "+sqlEsc.escape(reason)+")";
        db.query(sql, function(err, output) {  
            status = {"result": "success", "message": "Support ticket was sent!"}
            res.send(status)
        });
    } else {
        status = {"result": "failure", "message": "Support ticket failed!"}
        res.send(status)
    }
};

i expect the output of a popup message 'Support ticket was sent!', and for in the database a new column to appear with the given data that was sent from the form.




Aucun commentaire:

Enregistrer un commentaire