Quindi, sto cercando di creare una pagina generica per qualsiasi tabella richiesta dall'utente. Per questo sto cercando di recuperare tutti i dati dal server e di non avere nulla di codificato sul clientide.C'è un modo per ottenere aocolumn dal server modificabile modificabile?
$(document).ready(function(){
/* Add/remove class to a row when clicked on */
$('#table1 tr').on('click', function() {
$(this).toggleClass('row_selected');
});
var which_table=window.location.pathname;
var which_table_data=which_table.substring(0, which_table.length-1)+'/data';
var table_name=which_table.substring(14, which_table.length-1);
$('#table1').dataTable({
"bProcessing": true,
"bServerSide": true,
"bjQueryUI": true,
"sAjaxSource": which_table_data,
"bPaginate": true,
"sPaginationType": "full_numbers",
"bjQueryUI": true,
"sScrollX":"100%",
"aoColumnDefs": [{
"targets" : [0],
"visible" : false,
"searchable" : false
}]
}).makeEditable({
"sUpdateURL": "../update/" + table_name,
"sAddURL": "../add/" + table_name,
"sDeleteURL": "../delete/" + table_name,
"aoColumns": $.ajax({
dataType: "json",
url: '/get_aoColumns',
data: function (table_name) {
return {
q: table_name
};
},
results: function (data) {
alert(data);
}
});
});
});
Quindi, in questo pezzo sulla base del var which_table=window.location.pathname;
cerco di ottenere i dati per la tabella corrispondente dal server in cui io sono riuscito. Ma ora voglio ottenere anche l'array aoColumns dal server. La mia domanda è: posso inviare i dati nella stessa richiesta insieme a aoData, secho e altri campi obbligatori. Penso che non possa rendere datatable correttamente dal momento che aoColumns non fa parte del json richiesto. Come ottengo l'aoColumns per qualsiasi tabella in modo che anche la convalida diventi lato server e non dovrò progettare una pagina per tabella.
Questa sotto parte doesnt lavoro come non so che è il modo corretto di farlo
"aoColumns": $.ajax({
dataType: "json",
url: '/get_aoColumns',
Edited: -
Ho provato @ approccio garryp`s ..
Questi sono i dati ricevo dal server
[{"cssclass": "required", "type": "textarea"}, {"sUpdateURL": "../update/my_table", "cssclass": "required", "type": "textarea", "loadtype": "POST", "submit": "OK"}, {"loadurl": "../data/", "sUpdateURL": "../update/my_table", "loadtype": "POST", "type": "select", "submit": "OK"}]
Questo è il mio codice:
$(document).ready(function(){
/* Add/remove class to a row when clicked on */
$('#table1 tr').on('click', function() {
$(this).toggleClass('row_selected');
});
var which_table=window.location.pathname;
var which_table_data=which_table.substring(0, which_table.length-1)+'/data';
var table_name=which_table.substring(14, which_table.length-1);
if(table_name.indexOf('Welog')> -1) {
$('#table1').dataTable({
"bProcessing": true,
"bServerSide": true,
"bjQueryUI": true,
"sAjaxSource": which_table_data,
"bPaginate": true,
"sPaginationType": "full_numbers",
"bjQueryUI": true,
"sScrollX": "100%"
});
$('#formAddNewRow').hide();
}
else {
$.ajax({
url: '../get_aodata/' + table_name,
async: false,
success: function (data) {
alert(data);
$('#table1').dataTable({
"bProcessing": true,
"bServerSide": true,
"bjQueryUI": true,
"sAjaxSource": which_table_data,
"bPaginate": true,
"sPaginationType": "full_numbers",
"bjQueryUI": true,
"sScrollX": "100%",
"aoColumnDefs": [{
"targets": [0],
"visible": false,
"searchable": false
}]
}).makeEditable({
"sUpdateURL": "../update/" + table_name,
"sAddURL": "../add/" + table_name,
"sDeleteURL": "../delete/" + table_name,
"sAddDeleteToolbarSelector": "#table1_length",
"aoColumns" : data
/*"aoColumns" : [
{
"cssclass": "required",
"type":"textarea"
},
{
"cssclass": "required",
"type":"textarea",
"submit" : "OK",
"sUpdateURL": "../update/"+table_name,
"loadtype" : "POST"
},
{
"loadurl" : "../data/",
"type" : "select",
"submit": "OK",
"sUpdateURL": "../update/"+table_name,
"loadtype" : "POST"
}
]*/
});
}
});
}
});
Quindi, se vedete i aoColumns commentati nel presente codice è esattamente lo stesso come l'uscita ottenuto dal server, ma quello ottenuto dal server doesn t work and the one commented out if uncommented does work. The one got from the server if used using aoColumns : data just behaves the same way as if aoColumns parameter wasn
t menzionato affatto nella funzione makeditable. Significa che i dati non raggiungono quel parametro. Coz Non ho errori nella console.
Soluzione: -
success : function(data){
var data_str= JSON.parse(data);
});
Ok. Ho dovuto convertire la stringa json in JSobject usando parse e infine ha funzionato.
Ottenuto l'essenza. Fammi provare. Stavo facendo ricerche sullo stesso. – user2601010
OK Ho aggiunto un violino JS anche in caso di confusione. – garryp
Quindi, ho provato che il tuo approccio ha aggiornato la mia domanda. @garryp – user2601010