weixin_33701564 2017-01-03 16:11 采纳率: 0%
浏览 34

html表格|| 表格数据|| AJAX

starting point: I have a site with multiple forms like this:

<form class="form card-content-ingredients" action="" id="form-id-0" enctype="multipart/form-data">
            <ul>
              <li class="form__item">
                <label class="form__label" for="name">Text</label>
                <input class="form__input form__input--textfield" type="text" name="description" value="" placeholder="description">
              </li>
              <li class="form__item">
                <label class="btn btn--invalid" for="file" >picture</label>
                <input class="form__input form__input--file" id="file" type="file" name="img" value="picture">
              </li>
              <ul class="form__item--multi-align-right">
                <li>
                  <input class="btn btn--invalid" type="button" value="cancel">
                </li>
                <li>
                  <input class="btn btn--invalid btn__save" type="button" value="Save" data-item-id="0" data-rqstPath="/xyz">
                </li>
              </ul>
            </ul>
          </form>

When I click save an AJAX request is made transferring all data in a FormData interface including the file.

My problem is: only the file from the first form element is getting transferred. For all other forms the file input field is not included when I click save, but strangely all other input fields. When I change the order of the forms, it still has the same effect. I only use one JS function dealing with the formdata, which looks like this:

function updateSettingsAJAX( itemID, rqstPath) {

        if (!(typeof itemID !== typeof undefined && itemID !== false) ||
            !(typeof rqstPath !== typeof undefined && rqstPath !== false)) {
            return false;
        }

        var formData = new FormData($('#form-id-' + itemID)[0]);


        formData.append("itemID", itemID);

        return $.ajax({
            type: "POST",
            url: rqstPath,
            data: formData,
            processData: false,
            contentType: false,
        });  

If someone could help me with my problem, I would be really grateful.

  • 写回答

2条回答 默认 最新

  • 叼花硬汉 2017-01-03 16:48
    关注

    This is your code, with some corrections (unic IDs in forms), and it works fine: https://jsfiddle.net/sk5j8qds/

    <form class="form card-content-ingredients" action="" id="form-id-0" enctype="multipart/form-data">
    <ul>
        <li class="form__item">
            <label class="form__label">Text</label>
            <input class="form__input form__input--textfield" type="text" name="description" value="" placeholder="description">
        </li>
        <li class="form__item">
            <label class="btn btn--invalid" for="file_0" >picture</label>
            <input class="form__input form__input--file" id="file_0" type="file" name="img" value="picture">
        </li>
        <ul class="form__item--multi-align-right">
            <li>
                <input class="btn btn--invalid" type="button" value="cancel">
            </li>
            <li>
                <input class="btn btn--invalid btn__save" type="button" value="Save" data-item-id="0" data-rqstpath="/echo/html/">
            </li>
        </ul>
    </ul>
    

    <form class="form card-content-ingredients" action="" id="form-id-1" enctype="multipart/form-data">
        <ul>
            <li class="form__item">
                <label class="form__label">Text</label>
                <input class="form__input form__input--textfield" type="text" name="description" value="" placeholder="description">
            </li>
            <li class="form__item">
                <label class="btn btn--invalid" for="file_1" >picture</label>
                <input class="form__input form__input--file" id="file_1" type="file" name="img" value="picture">
            </li>
            <ul class="form__item--multi-align-right">
                <li>
                    <input class="btn btn--invalid" type="button" value="cancel">
                </li>
                <li>
                    <input class="btn btn--invalid btn__save" type="button" value="Save" data-item-id="1" data-rqstPath="/echo/html/">
                </li>
            </ul>
        </ul>
    </form>
    <script>
    function updateSettingsAJAX( itemID, rqstPath) {
            if (!(typeof itemID !== typeof undefined && itemID !== false) || !(typeof rqstPath !== typeof undefined && rqstPath !== false)) {
                return false;
            }
    
            var formData = new FormData($('#form-id-' + itemID)[0]);
    
    
            formData.append("itemID", itemID);
    
            return $.ajax({
                type: "POST",
                url: rqstPath,
                data: formData,
                processData: false,
                contentType: false,
            });
        }
    
        $(function () {
            $('.btn__save').on('click', function () {
                return updateSettingsAJAX($(this).data('item-id'),$(this).data('rqstpath') );
            });
        });
    </script>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真