如何将一个使用jquery添加的元素数组保存到MySQL DB中?

时间:2016-10-10 20:43:25

标签: javascript php jquery mysql

我想将此添加到我的数据库中,但我不知道如何发送它。

db_table
id              int(11)
employee        varchar(40)
date_complete   date
time            time
status          boolean
job             varchar(50)

我拥有所有数据,但我不知道如何将其转换为数组,以便我可以将其发送到php并将其保存在我的mysql数据库中。

或者是否有更好的方法来构建此代码以使其更容易或更好地练习。



$(document).ready(function() {
  $('<div/>', {
    'class': 'extraPerson',
    html: GetHtml()
  }).appendTo('#container');
  $('#addRow').click(function() {
    $('<div/>', {
      'class': 'extraPerson',
      html: GetHtml()
    }).hide().appendTo('#container').slideDown(200);

  });
})

function GetHtml() {
  var len = $('.extraPerson').length;
  var $html = $('.extraPersonTemplate').clone();
  $html.find('[name=date]')[0].name = "date" + len;
  $html.find('[name=employee]')[0].name = "employee" + len;
  $html.find('[name=time]')[0].name = "time" + len;
  $html.find('[name=status]')[0].name = "status" + len;
  $html.find('[name=job]')[0].name = "job" + len;
  return $html.html();
}
&#13;
.extraPersonTemplate {
  display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<form name="form1" id="form1">
  <div class="extraPersonTemplate">
    <div class="controls controls-row">
      <select class="span2" name="employee">
        <option value="Joe">Joe</option>
        <option value="Anna">Anna</option>
        <option value="Liz">Liz</option>
        <option value="Daniel">Daniel</option>
      </select>
      <input class="span3" placeholder="date" type="date" name="date">
      <select class="span2" name="time">
        <option value="9:00:00">9 a.m.</option>
        <option value="10:00:00">10 a.m.</option>
        <option value="11:00:00">11 a.m.</option>
        <option value="12:00:00">12 p.m.</option>
        <option value="13:00:00">1 p.m.</option>
      </select>
      <select class="span2" name="status">
        <option value="finished">Finished</option>
        <option value="inprogress">In Progress</option>

      </select>
      <select class="span2" name="job">
        <option value="design">Design</option>
        <option value="html">HTML</option>
        <option value="php">PHP</option>
      </select>
    </div>
  </div>
</form>
<div id="container"></div>
<a href="#" id="addRow"><i class="icon-plus-sign icon-white"></i> Add another Job</p></a>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

一种解决方案是使用Jquery序列化表单中的表单字段:

$( "form" ).on( "submit", function( event ) {
  var params = $( this ).serialize();
  $.post(yourserver.php, params, validate, "json")
});

function validate(response) {

  if (response.success) {
    // -- Do something after successful commit
    console.log("Allgood")
  } else {
    // -- Display an error
    console.log(response.message)
  }

}

https://api.jquery.com/serialize/

上的好文档

答案 1 :(得分:1)

您的数据库在哪里?它是在带有URL的服务器上吗?您是否可以使用该URL的端点配置API?在不了解您的数据库的情况下,我们无法根据您的具体情况说明您将如何实际保存数据。

至于你的选择,你应该弄清楚你的数据库情况,这就是我的想法:

  1. Here's an intro到HTML表单和here's a deeper break-down。 HTML表单可automatically send POST requests,表单中的数据在form-data事件中以submit形式发送。看来您的数据是以HTML格式构建的,这可能是一种选择。

  2. 您似乎已经了解了如何使用jquery访问DOM数据。您可以将数据收集到键值对的对象中,然后send it to your server with the jquery.ajax() method

  3. 有关设置RESTful后端的详细信息,我建议Heroku's RESTful MEAN guide

答案 2 :(得分:1)

传递使用jQuery创建的元素数组

var elementValue1 = $("#id").val(); // depends on type of element (text, select, checkbox, ...)
var elementValue2 = $("employee").val();

var request = $.ajax({
  url: "script.php",
  method: "POST",
  data: { id : elementValue1, employee: elementValue2 }, // etc.
  dataType: "html"
});

request.done(function( msg ) {
  alert("data sent to script");
});

request.fail(function( jqXHR, textStatus ) {
  alert( "Request failed: " + textStatus );
});

再看http://api.jquery.com/jquery.ajax/