基于if条件在$ .ajax中传递多个数据

时间:2018-05-08 06:50:50

标签: jquery html

我想为角色编号7传递4个参数,为其他角色传递3个参数。如果条件有错误,如果在条件中传递多个数据

  

未捕获的SyntaxError:意外的令牌==

$.ajax({
                    url: 'bulkUpdate',
                    type: 'get',
                    headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                    if(role==7){
                    data: {
                        'ids'  : join_selected_values,
                        'role' :role,
                        'prices':selected_price,
                        'currency':selected_currency
                    },
                    }
                    else{
                    data: {
                        'ids'  : join_selected_values,
                        'role' :role,
                        'comment':comment
                    },  
                    }
                    success: function (data) {
                    console.log('success');
                    },
                    }); 

4 个答案:

答案 0 :(得分:1)

那是因为你提供的语法不正确。如果AJAX请求,只需在外部构建data对象:

var ajaxData = {
    ids: join_selected_values,
    role: role
};

if (role === 7) {
    ajaxData['prices'] = selected_price;
    ajaxData['currency'] = selected_currency;
} else {
    ajaxData['comment'] = comment;
}

$.ajax({
    url: 'bulkUpdate',
    type: 'get',
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    data: ajaxData,
    success: function(data) {
        console.log('success');
    },
})

答案 1 :(得分:1)

$.ajax({
  url: 'bulkUpdate',
  type: 'get',
  headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
  
  data : role==7 ? {
                        'ids'  : join_selected_values,
                        'role' :role,
                        'prices':selected_price,
                        'currency':selected_currency
                    } :  {
                        'ids'  : join_selected_values,
                        'role' :role,
                        'comment':comment
                    }, 
  
  success: function (data) {
    console.log('success');
   },


});

由于$.ajax({})接受对象if(role==7){将无法直接使用。

因此要么是用户三元运算符,要么在调用ajax函数之前决定该值。

var data = {};

if(role==7){
 data =  { 'ids'  : join_selected_values,
            'role' :role,
             'prices':selected_price,
             'currency':selected_currency
          },
 }else{
   data =  {'ids'  : join_selected_values,
             'role' :role,
            'comment':comment
          },  
  }

答案 2 :(得分:1)

您在if-else对象中使用$.ajax。因此,您可以做的是,您可以比较您的条件,然后在data调用之外创建一个$.ajax对象。使用它可以防止该错误。

var role = 10;
var data;
if(role == 7){
      data = {
          'ids'  : join_selected_values,
          'role' :role,
          'prices':selected_price,
          'currency':selected_currency
        }
      }else {
      data = {
          'ids'  : join_selected_values,
          'role' :role,
          'comment':comment
      }
}
$.ajax({
        url: 'bulkUpdate',
        type: 'get',
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        data: data,  
        success: function (data) {
          console.log('success');
        }
}); 

答案 3 :(得分:1)

你可以像下面这样做

 var datatosend = { ids: join_selected_values, role: role}
    $.ajax({
        url: 'bulkUpdate',
        type: 'get',
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        data: {data:datatosend},
        success: function(data) {
            console.log('success');
        },
    });

您将获得服务器端的所有参数,并根据角色执行其他操作。