Jquery .serializeArray()未获取具有值的选定文本

eqoofvh9  于 2022-12-22  发布在  jQuery
关注(0)|答案(1)|浏览(165)

我的主要问题是我必须使用serialize with id和serializeArray with selected text发送数据。我需要两个序列化中的信息selected value和selected text,分别为serialize()serializeArray()。在刀片中不需要更改太多代码。

<form id="updateUser">
    <label for="name">Name</label> 
    <input type="text" id="name" name="name" placeholder="First and last name" tabindex="1" />

    <label>Agent Name</label> 
        <select name="user_id" id="user_id" >
          @foreach ($users as $user)
                <option value="{{ $user->id }}">{{ ucwords($user->name)}}</option>
           @endforeach
         </select>

    <input name="submit" type="submit" id="submit" tabindex="6" value="Send Message"/>

</form>

然后我使用jQuery发送 AJAX 请求,序列化表单并保存数据,然后在response.success中我将serializeArray发送到js文件中的另一个函数。

$.easyAjax({
            url: url,
            container: '#updateUser',
            type: "POST",
            buttonSelector: $(this),
            data: $('#updateUser').serialize(),

            success: function (response) {
                if(response.status == 'success'){
                  var form_data= $('#updateUser').serializeArray();
                    track("user store",form_data);
                 }
           });

这是serializeArray时form_data中的数据

0:{name: 'name', value: 'abc'}
1:{name: 'user_id', value: '23'}

我试过这个,但如何发送下拉菜单的值选定的文本.

if(response.status == 'success'){
    var agent_name = $("#user_id option:selected").text(); 
    var form_data= $('#updateUser').serializeArray();
    track("user store",form_data);
}

'

bihw5rsg

bihw5rsg1#

找到了解决办法。

$.easyAjax({
            url: url,
            container: '#updateUser',
            type: "POST",
            buttonSelector: $(this),
            data: $('#updateUser').serialize(),

            success: function (response) {
                if(response.status == 'success'){
                  var form_data= $('#updateUser').serializeArray();
                  var form_data_obj = {};
             $.map(form_data, function(n, i){
            form_data_obj[n['name']]= n['value'];
            if(n['name'].includes("_id")){ 
            var id_value= $.trim($("#"+n['name']+" option:selected").text());
            var id_name= n['name'].substr(0, n['name'].indexOf("_id"));
            id_name=id_name+"_name";
            form_data_obj[id_name]=id_value;
            }
        })      
        }
      });

相关问题