Po përpiqem të plotësoj një tabelë të dhënash (datatables.net). Unë kam një fushë që shkakton një kërkesë postimi ajax pas një ndryshimi.
Ky është kodi JS:
jQuery(document).ready(function() {
if(window.location.href.indexOf("neuen-trade-anlegen") > -1) {
var gf_id = 13;
}else if(window.location.href.indexOf("trade-bearbeiten") > -1) {
var gf_id = 11;
}else{
return;
}
//Icon zu Label hinzufügen
jQuery("label[for='" + jQuery("#input_" + gf_id + "_8").attr('id') + "']").html('Name <i class="fas fa-search" id="suchen"></i>');
jQuery("label[for='" + jQuery("#input_" + gf_id + "_31").attr('id') + "']").html('Symbol <i class="fas fa-search" id="suchen2"></i>');
//modal zu seite zur klasse modalanker hinzufügen
//data-backdrop = false ist wichtig damit kein graues overlay!
//z-index damit modal über seitenmenü ist
var htmlmodal = '<div class="modal fade" id="suchen_modal" data-backdrop="false" role="dialog" aria-hidden="true" style="z-index:2000">'+
'<div class="modal-dialog modal-dialog-centered modal-lg">'+
'<div class="modal-content">'+
'<div class="modal-header">'+
'<h4>Nach Wert suchen</h4>'+
'<button type="button" class="close" data-dismiss="modal" aria-label="Close">'+
'<i aria-hidden="true" class="fas fa-times"></i>'+
'</button>'+
'</div>'+
'<div class="modal-body">'+
'<div class="container-fluid">'+
'<div class="row">'+ //zeile1
'<div class="col-9">'+ //col1
'<div class="input-group input-group-sm mb-3">'+
'<div class="input-group-prepend">'+
'<span class="input-group-text" id="inputGroup-sizing-sm"><i class="fas fa-search" id="suchen"></i></span>'+
'</div>'+
'<input type="text" id="input_symbol" class="form-control" aria-label="Small" aria-describedby="inputGroup-sizing-sm">'+
'</div>'+
'</div>'+
'</div>'+
'<div class="row">'+ //zeile2
'<div class="col-12">'+ //col1
'<table id="symbol_search_table" class="display" style="width:100%">'+
'<thead>'+
'<tr>'+
'<th>Symbol</th>'+
'<th>Name</th>'+
'<th>Type</th>'+
'<th>Region</th>'+
'<th>Währung</th>'+
'<th>Match</th>'+
'</tr>'+
'</thead>'+
'</table>'+
'</div>'+
'</div>'+
'<div class="row">'+ //zeile3
'<div class="col">'+ //col1
'1 of 3'+
'</div>'+
'<div class="col">'+ //col2
'2 of 3'+
'</div>'+
'<div class="col">'+ //col3
'3 of 3'+
'</div>'+
'</div>'+
'<div class="row">'+ //zeile4
'</div>'+
'</div>'+
'</div>'+
'<div class="modal-footer">'+
'<button type="button" class="btn btn-light-primary font-weight-bold" data-dismiss="modal">Schließen</button>'+
'<button type="button" class="btn btn-primary font-weight-bold">Übernehmen</button>'+
'</div>'+
'</div>'+
'</div>'+
'</div>';
//modalanker muss element mit klasse modalanker auf seite sein
// Inserting the code block to wrapper element
//document.getElementById("modalanker").innerHTML = htmlmodal;
jQuery( ".modalanker" ).append( htmlmodal );
//bootstrap modal bei klick auf suchen icon öffnen
jQuery('#suchen, #suchen2').on('click', function(){
//alert("test");
jQuery('#suchen_modal').modal('show');
//jQuery('#suchen_modal').modal('show');
})
//symbol eingeben
jQuery('#input_symbol').on('change', function(){
var symbol = jQuery('#input_symbol').val();
//datatable laden
jQuery('#symbol_search_table').DataTable({
"dataSrc": 'data',
"ajax": {
async: 'false',
type: 'post',
url: '../custom_scripts/alphavantage_api_symbol_search.php',
data: {
symbol:symbol
}
},
"columns": [
{ title: 'Symbol', data: 'symbol' },
{ title: 'Name', data: 'name' },
{ title: 'Type', data: 'type' },
{ title: 'Region', data: 'region' },
{ title: 'Währung', data: 'currency' },
{ title: 'match', data: 'matchScore' }
]
});
})
})
Tani në php, po marr disa të dhëna nga api alphavantage që më jep një grup që duket kështu: Përditëso: json i ri duket kështu:
{"data":[{"symbol":"WST","name":"West Pharmaceutical Services Inc.","type":"Equity","region":"United States","currency":"USD","matchScore":"1.0000"},{"symbol":"WSTL","name":"Westell Technologies Inc.","type":"Equity","region":"United States","currency":"USD","matchScore":"0.8571"},{"symbol":"WSTG","name":"Wayside Technology Group Inc.","type":"Equity","region":"United States","currency":"USD","matchScore":"0.8571"},{"symbol":"WSTAX","name":"Ivy Science And Technology Fund Class A","type":"Mutual Fund","region":"United States","currency":"USD","matchScore":"0.7500"},{"symbol":"WSTYX","name":"Ivy Science And Technology Fund Class Y","type":"Mutual Fund","region":"United States","currency":"USD","matchScore":"0.7500"},{"symbol":"WSTRF","name":"Western Uranium & Vanadium Corp.","type":"Equity","region":"United States","currency":"USD","matchScore":"0.7500"},{"symbol":"WSTCX","name":"Ivy Science And Technology Fund Class C","type":"Mutual Fund","region":"United States","currency":"USD","matchScore":"0.7500"},{"symbol":"WAMIX","name":"WSTCM Credit Select Risk - Managed Fund Institutional Shares","type":"Mutual Fund","region":"United States","currency":"USD","matchScore":"0.7500"},{"symbol":"WSTBX","name":"Ivy Science And Technology Fund Class B","type":"Mutual Fund","region":"United States","currency":"USD","matchScore":"0.2500"}]}
Dhe ky është kodi php:
//SYMBOL_SEARCH
$feed_url = "https://www.alphavantage.co/query?function=SYMBOL_SEARCH&keywords=$symbol&apikey=$apikey";
$response = wp_remote_get( $feed_url );
$json = wp_remote_retrieve_body( $response );
//echo ($json);
//json decodieren
$response = json_decode( $json, true );
$myarray = json_decode( $json, true );
//echo json_encode($response);
//remove bestmatches outer array
$myarray = $response['bestMatches'];
//echo json_encode($myarray);
//remove dots
$myarray = array_map(function($tag) {
return array(
'symbol' => $tag['1. symbol'],
'name' => $tag['2. name'],
'type' => $tag['3. type'],
'region' => $tag['4. region'],
'currency' => $tag['8. currency'],
'matchScore' => $tag['9. matchScore']
); }, $myarray);
//echo json_encode($myarray);
//put in an array named data
$data_array = array("data" => $myarray);
echo json_encode($data_array);
Tabelat e të dhënave thjesht tregojnë përpunimin dhe nuk janë të mbushura fare. Mendoj se diçka nuk është në rregull me formatimin e grupit apo jo? Apo keni ndonjë sugjerim tjetër? Çdo ndihmë do të vlerësohej vërtet, sepse nëse nuk keni ide se si të vazhdoni me këtë problem.