Как отправить форму с помощью динамического HTML-ввода texbox с помощью jQuery Ajax

Я создаю динамическое множественное поле ввода HTML с помощью jQuery и заполняю значение, после заполнения я хочу обновить цену продукта в каждом текстовом поле и отправить форму с обновленным значением на сервер с помощью ajax. Я столкнулся с проблемой с приведенным ниже кодом, если я редактирую цену продукта в текстовом поле и нажимаю кнопку «Обновить», она вызывает мою функцию ajax, но обновленная цена продукта не отправляется на сервер. Я получаю пустое значение.

Если я нажму кнопку «Обновить», я получу пустой массив для кода ниже:

JSON.stringify($("#updateNameForm").serializeArray()) 

По какой-то причине мои динамические текстовые поля обновляют значения, не поступающие в метод ajax.

Пожалуйста, найдите мой код ниже - может кто-нибудь помочь, что я делаю неправильно и как решить проблему. Полный код:

JSON, поступающий со стороны сервера:

[{
    "productName": "Product1",
    "productPrice": "323"
}, {
    "productName": "Product2",
    "productPrice": "4333"
}] 

HTML-код:

<div class="content-wrapper">
  <section class="content">
    <div class="row">
      <div class="col-md-9">
        <div class="box box-info">
          <div class="box-header with-border">
            <h3 class="box-title">My Form</h3>
          </div>
          <!-- /.box-header -->
          <form id="updateNameForm" class="form-horizontal" method="post">
            <div class="box-body">
            </div>
            <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <div class="checkbox">
                  <label>
                    <input type="checkbox" id="editName" class="input_control" /> <strong> Edit</strong>
                  </label>
                </div>
              </div>
            </div>
            <div class="box-footer">
              <button type="submit" class="btn btn-default">Cancel</button>
              <input id="updateName" type="button" name="updatea" value="Update" class="btn btn-info pull-right">
            </div>
          </form>
        </div>
      </div>
    </div>
  </section>
</div>

Обновить Ajax

$("#updateName").on('click', function() {
    $.ajax({
        url: 'myApp/updateProduct',
        type: "PUT",
        dataType: 'json',
        data: JSON.stringify($("#updateNameForm").serializeArray()),
        success: function(result) {
            alert(result);
        },
        error: function(e) {
            console.log(e.responseText);
        }
    });
});

функция loadProduct

function loadProduct() {
    $.ajax({
        url: 'myApp/getProduct',
        type: "GET",
        dataType: 'json',
        success: function(productJson) {
            $.each(JSON.parse(JSON.stringify(productJson)), function(idx, obj) {
                var formgroup = $("<div/>", {
                    class: "form-group"
                });
                formgroup.append($("<label>", {
                    class: "col-sm-2 control-label",
                    text: obj.productName
                }));
                var colsm = $("<div/>", {
                    class: "col-sm-10"
                });
                var input = $("<input/>", {
                    type: "text",
                    class: "form-control",
                    id: obj.productName + "Id",
                    value: obj.productPrice
                });
                colsm.append(input);
                formgroup.append(colsm);
                $(".box-body").append(formgroup);
            });
        },
        error: function(e) {
            console.log(e.responseText);
        }
    });
}

Спасибо!


person java begineer    schedule 11.05.2016    source источник
comment
как ты сказал, что but updated product price not sending to server.?   -  person guradio    schedule 11.05.2016
comment
Я получаю пустое значение при отправке формы. Я поставил предупреждение - JSON.stringify($(#updateNameForm).serializeArray()) - это возвращает пустой массив вместо обновленного значения   -  person java begineer    schedule 11.05.2016
comment
почему бы не использовать $("#updateNameForm").serialize(), почему?   -  person madalinivascu    schedule 11.05.2016


Ответы (1)


Вы не указали name в поле ввода.

var input = $("<input/>", {
    type: "text",
    name: "productPrice",
    class: "form-control",
    id: obj.productName + "Id",
    value: obj.productPrice
});

Попробуйте с приведенным выше кодом.

person Sid    schedule 11.05.2016