单击功能不适用于bootsrap模态

时间:2019-01-24 06:33:54

标签: javascript jquery ajax bootstrap-4

这是我的点击功能

$(".addPizza").on("click", function(event) {
  event.preventDefault();
  console.log("hello")
  let userId = $("#userId").attr("data-id");
  let pizzaRecipe = $('#pizza-recipe').val().trim();
  let ingredients = JSON.stringify(obj);
  let title = $("#pizza-title").val().trim();

  let newPizza = {
    userid: userId,
    recipe: pizzaRecipe,
    ingredients: ingredients,
    totalCal: calTotal,
    title: title
  };
  $.ajax('/api/pizza', {
    type: 'POST',
    data: newPizza
  }).then(() => {
    console.log('Created new pizza recipe');
    location.reload();
  });
  $.ajax('/', newPizza).then(() => {
    console.log('Created new pizza recipe');
    // location.reload();
  });
});

这是我的html模式

<button id="button" type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Add a recipe</button>
<!-- end of button -->

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">New Recipe</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
      </div>
      <div class="modal-body">
        <form>

          <form class="recipe-form" action="/pizza" method="POST">
            <a id="userId" data-id=<%=user.id %></a>



            <input type="text" id="pizza-title" name="pizza-title" placeholder="title"><br>
            <input type="text" id="pizza-recipe" name="pizza-recipe" placeholder="recipe"><br>

            <label for="vegy1">Cucumber</label>
            <input type="number" class="quant" name="vegy1" data-name="cucumber" min="0" max="3" value="0">

            <label for="vegy2">Tomato</label>
            <input type="number" class="quant" name="vegy2" data-name="tomato" min="0" max="3" value="0">

            <label for="vegy3">Pineapple</label>
            <input type="number" class="quant" name="vegy3" data-name="pineapple" min="0" max="3" value="0">

            <label for="vegy4">Avocado</label>
            <input type="number" class="quant" name="vegy4" data-name="avocado" min="0" max="3" value="0"><br>

            <label for="vegy5">Eggplant</label>
            <input type="number" class="quant" name="vegy5" data-name="eggplant" min="0" max="3" value="0">

            <label for="vegy6">Olive</label>
            <input type="number" class="quant" name="vegy6" data-name="olive" min="0" max="3" value="0">

            <label for="vegy7">Onion</label>
            <input type="number" class="quant" name="vegy7" data-name="onion" min="0" max="3" value="0">

            <label for="vegy8">Mushroom</label>
            <input type="number" class="quant" name="vegy8" data-name="mushroom" min="0" max="3" value="0"><br>

            <label for="vegy9">Garlic</label>
            <input type="number" class="quant" name="vegy9" data-name="garlic" min="0" max="3" value="0">

            <label for="vegy10">Spinach</label>
            <input type="number" class="quant" name="vegy10" data-name="spinach" min="0" max="3" value="0">

            <label for="vegy11">Cilantro</label>
            <input type="number" class="quant" name="vegy11" data-name="cilantro" min="0" max="3" value="0">

            <label for="vegy12">Chicken</label>
            <input type="number" class="quant" name="vegy12" data-name="chicken" min="0" max="3" value="0"><br>

            <label for="vegy13">Anchovy</label>
            <input type="number" class="quant" name="vegy13" data-name="anchovy" min="0" max="3" value="0">

            <label for="vegy14">Bacon</label>
            <input type="number" class="quant" name="vegy14" data-name="bacon" min="0" max="3" value="0">

            <label for="vegy15">Sausage</label>
            <input type="number" class="quant" name="vegy15" data-name="sausage" min="0" max="3" value="0">

            <label for="vegy16">Beef</label>
            <input type="number" class="quant" name="vegy16" data-name="beef" min="0" max="3" value="0"><br>

            <label for="vegy17">Ham</label>
            <input type="number" class="quant" name="vegy17" data-name="ham" min="0" max="3" value="0">

            <label for="vegy18">Pepperoni</label>
            <input type="number" class="quant" name="vegy18" data-name="pepperoni" min="0" max="3" value="0">

            <label for="vegy19">Salami</label>
            <input type="number" class="quant" name="vegy19" data-name="salami" min="0" max="3" value="0">

            <label for="vegy20">Banana</label>
            <input type="number" class="quant" name="vegy20" data-name="banana" min="0" max="3" value="0"><br>

            <p id="totalCal"></p>
            <div class="modal-footer">
              <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
              <button type="submit" class="btn btn-primary addPizza">Add Recipe</button>
            </div>

          </form>
      </div>
    </div>
  </div>
</div>

let mysql = require("mysql");

let connection;

if (process.env.JAWSDB_URL) 
    // DB is JawsDB on Heroku
    connection = mysql.createConnection(process.env.JAWSDB_URL);
else 
    // DB is local on localhost
    connection = mysql.createConnection({
        port: 3306,
        host: 'localhost',
        user: 'root',
        password: 'pass',
        database: 'pizza_recipe_db'
    });

// Establish connection to MySQL
connection.connect((err) => {
    if (err) {
        console.error(`error connecting MySQL: ${err.stack} \n`);
        return;
    }
    console.log(`Connected to MySQL as id ${connection.threadId} \n`);
});

// Export connection
module.exports = connection;

当我单击添加配方按钮时,它也给我这个错误 GET http://localhost:3000/ net :: ERR_EMPTY_RESPONSTPOST http://localhost:3000/api/pizza net :: ERR_CONNECTION_REFUSED

POST http://localhost:3000/api/pizza网:: ERR_CONNECTION_REFUSED

有人告诉我应该使用“事件委托”,但我不确定该怎么做。

感谢您的帮助。如果您需要更多代码,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:3)

您尚未在HTML中正确关闭锚标记,这就是用户ID设置不正确的原因。 检查下一行

<a id="userId" data-id=<%=user.id %></a>

应该是

<a id="userId" data-id=<%=user.id %>></a>

由于未正确关闭,JS正在发送userid = 3 </a,在Mysql上,您的列是user_id不是文本,它是无符号整数。这就是为什么您的插入代码无法将Text值插入整数列并引发sql异常而退出服务器操作的原因。这就是为什么您遇到错误

http://localhost:3000/          net::ERR_EMPTY_RESPONSTPOST 
http://localhost:3000/api/pizza net::ERR_CONNECTION_REFUSED

服务器退出并且未运行时。

更改上面给出的anchor标签,您的代码将正常运行。