Как отправить данные формы в виде объекта JSON..?

#javascript #jquery #ajax #spring #spring-boot

Вопрос:

У меня есть некоторые текстовые данные и изображения на стороне сервера. и мне нужно отправить эти данные в виде объекта JSON. Но я не могу отправлять такие изображения из-за FormData.Поэтому мне нужно преобразовать данные моей формы в один объект JSON. Пожалуйста, помогите мне… Спасибо Тебе..!

HTML-часть —

     <form>
        <div class="form-group">
            <label for="txtcustomerImage"> <i class="tags icon"></i> Image Of Your NIC</label>
            <input class="form-control-file" id="txtcustomerImage" type="file" name="txtcustomerImage">
            </div>
    </form>
 

Часть Ajax —

 $('#btnCreateNewAccount').click(function () {


    var fileObject = $("#txtcustomerImage")[0].files[0];//access file object from input field
    var fileName = $("#txtcustomerImage")[0].files[0].name; //get file name
    var form = new FormData(); //setup form data object to send file data
    form.append("custImage", fileObject, fileName); //append data



    console.log('clicked..');
    let customerNIC = $('txtcustomerNIC').val();
    let customerName = $('txtcustomerName').val();
    let customerAddress = $('txtcustomerAddress').val();

    console.log(form)

    $.ajax({
        method: "post",
        url: "http://localhost:8080/Sprinf_Final-Back-end/customer",
        contentType: "application/json",
        data: JSON.stringify({
            customerNIC: customerNIC,
            customerName: customerName,
            customerAddress: customerAddress,

        }),
        success: function (res) {
            if (res.massage == 'Success') {
                alert('Your Account is Successfully Created!When You Log to Server Use Your User Name amp; Password..!');
                console.log(res);
            } else {
                console.log('error');
            }
        }
    });

});
 

Комментарии:

1. Придира: Это объект JSON . Возможно, это не то, чего ты хочешь.

Ответ №1:

Нет смысла создавать FormData объект, если вы хотите отправить данные в формате JSON. Вы можете прочитать содержимое файла fileObject.text() и отправить его:

 $('#btnCreateNewAccount').click(async function() {
  const fileObject = $("#txtcustomerImage")[0].files[0]; //access file object from input field
  const fileName = fileObject.name; //get file name
  const data = JSON.stringify({
      fileObject: await fileObject.text(),
      fileName
  })
  console.log(data);  
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <div class="form-group">
    <label for="txtcustomerImage"> <i class="tags icon"></i> Image Of Your NIC</label>
    <input class="form-control-file" id="txtcustomerImage" type="file" name="txtcustomerImage">
  </div>
</form>
<button id="btnCreateNewAccount">
Click
</button> 

Комментарии:

1. могу ли я сохранить данные const в mn SQL DB..?

2. @Gathsara Данные являются постоянными в клиентском коде. После того, как он отправлен на сервер, разницы нет. В JSON нет константы.

3. частный байт [] custImage — это может хранить данные изображения..?

4. @Gathsara Да, массив байтов может хранить данные изображений.

5. CustomerDTO(CustID=null, custName=null, custAddress=null, custImage=null) — Но мое значение равно null.. Я не преуменьшаю.