Javascript:在Ajax中传递动态数据名属性

Javascript:在Ajax中传递动态数据名属性,javascript,php,ajax,variables,dynamic,Javascript,Php,Ajax,Variables,Dynamic,我的代码如下: image_type = 'photo'; jQuery.ajax({ type: 'POST', url: '?q=myid_save_input_image', data:{ 'template_id': 1, 'image_id': 2, 'primary_id': 3, image_type : 4, } }).done(function(o){

我的代码如下:

image_type =  'photo';
jQuery.ajax({
    type: 'POST',              
    url: '?q=myid_save_input_image', 
    data:{
       'template_id': 1,
       'image_id': 2,
       'primary_id': 3,
       image_type : 4,  
    }
}).done(function(o){                                                    
}); 
我注意到代码是在什么时候执行的。查看Google Chrome开发者工具中的“网络”选项卡:

我期望这样:

template_id: 1
image_id: 2
primary_id: 3
photo: 4
var image_type = "photo";

var dataToPass = {};
dataToPass['template_id'] = 1;
dataToPass['image_id']=2;
dataToPass['primary_id']= 3;
 dataToPass[image_type] = 4;

我将如何实现它
$image\u type
是动态的,因此第四个属性名称可以随时更改。

您需要首先创建对象,然后使用[]使用变量设置动态键

var formData = {
   'template_id': 1,
   'image_id': 2,
   'primary_id': 3 
};
image_type =  'photo';
formData[image_type] = 4;

jQuery.ajax({
    type: 'POST',              
    url: '?q=myid_save_input_image', 
    data: formData
  }).done(function(o){                                                    
}); 

事先准备好数据变量并将其传递给AJAX函数

这样做:

template_id: 1
image_id: 2
primary_id: 3
photo: 4
var image_type = "photo";

var dataToPass = {};
dataToPass['template_id'] = 1;
dataToPass['image_id']=2;
dataToPass['primary_id']= 3;
 dataToPass[image_type] = 4;

那么问题出在哪里??只需在ajax代码中将image_type更改为photo即可。谢谢您给我一个想法。这种行为背后的原因是什么?