trying to extend existing empty JSON object.
After first 2 simple extends I will get {size: 10, from: 0}
.
But when trying $.extend function with multiple level JSON
JavaScript
x
8
1
"query" :
2
{ "query_string" :
3
{ "fields" : ["name", "description"],
4
"query" : "d.search.value",
5
"tie_breaker" : 0
6
}
7
}
8
I have no success.
JavaScript
1
18
18
1
data : function ( d ) {
2
var query = '{}';
3
4
sQuery = $.extend(query,{size: d.length});
5
sQuery = $.extend(sQuery,{from: d.start});
6
7
if ( d.search.value ) {
8
9
sQuery = $.extend(sQuery,
10
"query" : { "query_string" : { "fields" : ["name", "description"], "query" : "d.search.value", "tie_breaker" : 0 } }
11
);
12
console.log(sQuery);
13
};
14
15
return JSON.stringify(sQuery);
16
17
},
18
But getting “Uncaught SyntaxError: missing ) after argument list
” error.
I believe overlooked something simple but I am not able to find it.
Advertisement
Answer
Thanks to @Barmar I have final working solution:
JavaScript
1
42
42
1
$('#integrations').DataTable( {
2
var query = '{}';
3
4
"bProcessing": true,
5
"bServerSide": true,
6
"ajax": {
7
"url": "http://localhost:9200/integrations-prod/_search",
8
9
data : function ( d ) {
10
console.log( d.length );
11
sQuery = $.extend(query,{size: d.length});
12
sQuery = $.extend(sQuery,{from: d.start});
13
14
if ( d.search.value ) {
15
sQuery = $.extend(sQuery,
16
{"query" : { "query_string" : { "fields" : ["name", "description"], "query" : d.search.value, "tie_breaker" : 0 } }}
17
);
18
};
19
return JSON.stringify(sQuery);
20
},
21
"contentType": "application/json",
22
"type": "POST",
23
"dataType": "json",
24
"dataSrc": "hits.hits",
25
dataFilter: function(data){
26
var json = jQuery.parseJSON( data );
27
json.recordsTotal = json.hits.total.value;
28
json.recordsFiltered = json.hits.total.value;
29
return JSON.stringify( json ); // return JSON string
30
},
31
"columnDefs": [ { "defaultContent": "-", "targets": "_all" } ],
32
},
33
"columns": [
34
{ "data": "_source.name" },
35
{ "data": "_source.description" },
36
{ "data": "_source.valid" },
37
{ "data": "_source.status_id" },
38
{ "data": "_source.region_id" },
39
{ "data": "_source.validated_time" }
40
]
41
} );
42
This “accidently” resolve partially also cases Elasticsearch Datatables, Datatables pagination with Elasticsearch, dataTable custom loading contents, …
Thank you @Barmar