简体   繁体   English

如何从动态字段发送 POST 请求?

[英]How to send POST requests from dynamic fields?

I'm creating a quiz form to pass into a JSON file, but I'm having trouble sending the POST requests.我正在创建一个测验表单以传递给 JSON 文件,但我在发送 POST 请求时遇到了问题。 I'm not sure which fields I can access, or how.我不确定我可以访问哪些字段或如何访问。

This is the form: https://i.imgur.com/6xtmt3a.png这是表格: https://i.imgur.com/6xtmt3a.png

<script>


    // input field
    $(document).ready(function() {
    var wrapper = $(".div1");
    var newbutton = $(".add_form_field");

    var fields = 1;
    $(newbutton).click(function(e) {
        e.preventDefault();
        $(wrapper).append(' <div class="input-group">    <input type="text" value = "Question"  class="form-control" placeholder="Recipients username"  <div class="input-group-append" id="button-addon4"><button class="btn btn-outline-secondary" id ="delete" type="button">Delete</button><button class="btn btn-outline-secondary" id ="add" type="button">Add</button></div></div></div>'); //add input box

           //$(wrapper).append('<button type="button" id ="test1" class="btn btn-primary">Primary</button>'); //add input box
           //$(wrapper).append('<div><input type="text" value = "Question"name="mytext[]"/> <a href="#" id="delete">Delete</a> <a href="#" id="add">add</a> </div> '); //add input box
           var d =  $(this).parent('form').serialize();
        console.log(d);
    });
    //delete  buttons
    $(wrapper).on("click", "#delete", function(e) {
        e.preventDefault();
        $(this).parent('div').remove();
        fields--;
    })
    // remove div
    $(wrapper).on("click", '#s1', function(e) {
        //$(this).parent('div').parent('div').remove();
        var q=  $(this).parent().serialize();
        console.log(q);
    })

    //add answer
    $(wrapper).on("click", "#add", function(e) {
        e.preventDefault();
        $(this).parent('div').append('\n <div class="input-group flex-nowrap"><div class="input-group-prepend"><span class="input-group-text" id="addon-wrapping">-</span></div><input type="text" class="form-control" placeholder="Answer" aria-label="Username" aria-describedby="addon-wrapping"></div> ' );
        var d =  $(this).parent('form').serialize();
        console.log(d);
        //$(this).parent('div').parent('div').append('<div class="input-group mb-3"><input type="text" class="form-control" placeholder="Recipients username" aria-label="Recipients username" aria-describedby="button-addon2"><div class="input-group-append"><button class="btn btn-outline-secondary" type="button" id="button-addon2">Button</button></div></div>' );
        fields--;
    })
});

$( "#quizForm" ).submit(function( event ) {
  var $form = $( this ),
  path = $form.attr( "action" );

  payload = {"testKey":"test"};
  var posting = $.ajax({
    url: path,
    method: "POST",
    headers: {'X-CSRFToken': '{{ csrf_token }}'},
    data: payload,
    dataType: "application-json",
  });
  console.log(payload);

  posting.done(function() {
    console.log("posted");
  });
});

  </script>

I need to have a JSON file output on submit that contains the questions and answers to each question (right or wrong for now) Thanks!我需要在提交时有一个 JSON 文件 output 包含每个问题的问题和答案(现在对或错)谢谢!

I would suggest adding an attribute contains the object's key on each question - let's say it will be the "question ID".我建议在每个问题上添加一个包含对象键的属性 - 假设它将是“问题 ID”。 we will have something like that:我们会有类似的东西:

<div class="question-container" question-id="01"></div>

Assuming that answers are an.answer div with an input inside we will have something like that on form submit:假设答案是带有输入的 an.answer div,我们将在表单提交时得到类似的内容:

let formObject = new Object();
$('.question-container')
  .each(function () {
    const questionID = this.attr('question-id');
    const answersArray = new Array();
    this.find('.answer input')
      .each(function () { // assuming answer is a div contains an input tag
        answersArray.push(this.value());
      })
    formObject[questionID] = answersArray;
  })
/// here formObject contains the formatted form as json

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM