2016-11-11 39 views
0

我有一个函数,它接受Quickbase recordID和fieldID并删除与该字段关联的任何文件。首先,函数:基于传递给函数的值生成密钥名称

function deleteFiles(recid,fldid) { 

    var apptoken = "xxxxxxxxxxxxxxxxxxxxxxxxx"; 
    $.ajaxSetup({data: {apptoken: apptoken}}); 

    var dbid = "xxxxxxxxx"; 

    var promise = $.post(dbid, { 
     act: "API_EditRecord", 
     rid: recid, 
     _fid_NN: "", 
     delfile_fid_NN: "1" 
    }); 

    $.when(promise).then(function(xml){ 
     console.dirxml(xml); 
    }); 
} 

其中“NN”需要等于传递的fieldID(fldid)。我已经尝试将fldid连接到这两个关键名称上,但这不起作用。我见过很多类似的问题,建议创建对象等,但这些也不适用于我的情况。所以问题是,我该如何动态改变这些键名,以便QB很高兴并且文件被删除?谢谢!

+0

移动你的对象文本,通话,把它放在上面,给它一个变量名称。然后使用'myObject [“delfile_fid _”+ myNN] = 1;''然后传递'myObject'而不是文字。 – dandavis

+0

欣赏回复。我遇到了GPicazo的答案为我解决的错误。干杯! – pixelsandcode

+0

很高兴帮助GPicazo帮助你;) – dandavis

回答

0

尝试以下操作:

function deleteFiles(recid,fldid) { 
    var apptoken = "xxxxxxxxxxxxxxxxxxxxxxxxx"; 
    $.ajaxSetup({data: {apptoken: apptoken}}); 

    var dbid = "xxxxxxxxx"; 
    var payload = { 
     act: "API_EditRecord", 
     rid: recid 
    }; 

    payload['_fid_' + fldid] = ''; 
    payload['delfile_fid_' + fldid] = '1'; 

    var promise = $.post(dbid, payload); 

    $.when(promise).then(function(xml){ 
     console.dirxml(xml); 
    }); 
} 
+0

辉煌!谢谢 - 完美的工作。 – pixelsandcode

0

你也可以做到这一点使用ES6如下特点。

function deleteFiles(recid, fldid) { 
 

 
    var apptoken = "xxxxxxxxxxxxxxxxxxxxxxxxx"; 
 
    $.ajaxSetup({ 
 
    data: { 
 
     apptoken: apptoken 
 
    } 
 
    }); 
 

 
    var dbid = "xxxxxxxxx"; 
 

 
    var promise = $.post(dbid, { 
 
    act: "API_EditRecord", 
 
    rid: recid, 
 
    ['_fid_' + fldid]: "", 
 
    ['delfile_fid_' + fldid]: "1" 
 
    }); 
 

 
    $.when(promise).then(function(xml) { 
 
    console.dirxml(xml); 
 
    }); 
 
}

+0

好点,谢谢提醒。 – dandavis