Как получить данные из MSSQL Query for DataTables, используя Ajax

Это код, который я получаю от DataTables Child Rows

$(document).ready(function() {
var table = $('#example').DataTable( {
"ajax": "../ajax/data/objects.txt", //here
"columns": [
{
"className":      'details-control',
"orderable":      false,
"data":           null,
"defaultContent": ''
}, //and here to fetch the data below
{ "data": "name" },
{ "data": "position" },
{ "data": "office" },
{ "data": "salary" }
],
"order": [[1, 'asc']]
} );

Я хотел бы получить данные из SQL-запроса с помощью ajax. Это мой SQL-запрос:

$tsql =
"SELECT *
FROM [dbo].[ITEM_MASTER] A
INNER JOIN
[dbo].[STOCK] B
ON
B.ItemId = A.ItemId
";
$result = sqlsrv_query($conn, $tsql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if (!$result) {
die("Query to show fields from table failed");
}

while($row=sqlsrv_fetch_array($result))
{
$ItmId = $row['ItemId'];
$ItmName = $row['ItemName'];
$ItmType = $row['ItemType'];
$ItmGroup = $row['ItemGroup'];
$ItmClass = $row['ItemClass'];
$ItmSerialNum = $row['ItemSerialNum'];
$ItmUOM = $row['ItemUOM'];
$StkQty = $row['StockQuantity'];
$StkId = $row['StockId'];
}

А в части AJAX, я просто называю имя переменной, как $ItmId или как я сказал в своем цикле.
Является ли это возможным? Если так, то как? Поскольку у меня нет никаких знаний о AJAX


ОБНОВИТЬ

Данные были переданы на второй параметр и не показывает ItmId ? И не важно, изменюсь ли я $data : ItmName он просто отображает на основе массивов и отображает что-то еще?

$(document).ready(function() {
var table = $('#table').DataTable( {
"ajax": {
"url": "table_data.php",
"type": "POST"},
"columns": [
{
"class":          'details-control',
"orderable":      false,
"data":           null,
"defaultContent": ''
},
{ "$data": "ItmId"  },
{ "$data": "ItmName" },
{ "$data": "ItmGroup"},
{ "$data": "ItmClass"}
],
"order": [[1, 'asc']]
} );

1

Решение

Во-первых, вам нужно изменить эту строку:

"ajax": "../ajax/data/objects.txt", //here

чтобы указать на фактический файл, который будет выполнять SQL-запрос для извлечения данных: например, так:

"ajax": {"url": "path/to/phpfile.php", "type": "POST"}

Вы должны сделать свой while цикл как это:

$data = array();
while($row=sqlsrv_fetch_array($result))
{
$ItmId = $row['ItemId'];
$ItmName = $row['ItemName'];
$ItmType = $row['ItemType'];
$ItmGroup = $row['ItemGroup'];
$ItmClass = $row['ItemClass'];
$ItmSerialNum = $row['ItemSerialNum'];
$ItmUOM = $row['ItemUOM'];
$StkQty = $row['StockQuantity'];
$StkId = $row['StockId'];

$data['data'][] = array($ItmId, $ItmName, $ItmType,....etc);
}
echo json_encode($data);

Вы должны заметить, что вам требуется точное количество столбцов в вашей фактической таблице (html).
Кроме того, ваш JSON должен выглядеть так:

data:
array(
ItmId,
ItmName,
..etc
),
array(
ItmId,
ItmName,
..etc
),

По сути, есть массив строк.

4

Другие решения

Основываясь на ответе Даррена, я решил это так:

table_data.php

    $data = array();

while($row=sqlsrv_fetch_array($result))
{
$data['data'][] = array(
'ItmId'          => $row['ItemId'],
'ItmName'        => $row['ItemName'],
'ItmType'        => $row['ItemType'],
'ItmGroup'       => $row['ItemGroup'],
'ItmClass'       => $row['ItemClass'],
'ItmSerialNum'   => $row['ItemSerialNum'],
'ItmUOM'         => $row['ItemUOM'],
'StkQty'         => $row['StockQuantity'],
'StkId'          => $row['StockId']
);

}

echo json_encode($data);

Table.php (где я показываю мой HTML)

$(document).ready(function() {
var table = $('#table').DataTable( {
"ajax": {
"url": "table_data.php",
"type": "POST"},
"columns": [
{
"class":          'details-control',
"orderable":      false,
"data":           null,
"defaultContent": ''
},
{ "data": "ItmId"},
{ "data": "ItmName"},
{ "data": "ItmClass"},
{ "data": "ItmUOM"}
],
"order": [[1, 'asc']]
} );
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector