2016-11-11 36 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