2016-07-27 5 views
0

Это мир код ...Jquery DataTable возвращения JSON на документ, готовый

Я думал, что я закончил что-то похожее на это, но, по-видимому, нет.

Я пытаюсь вернуть JSON из скрипта PHP для заполнения DATATABLE.

Вот PHP скрипт под названием «апи/exceptions_all.php»:

<?php 
$select = "SELECT '', [FOR_PARTNER], [FOR_NAME] FROM [brokerage].[dbo].[for_exceptions]"; 

$query = sqlsrv_query($dbc, $select); 

$out = array(); 
while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) 
{ 
    $out[] = $row; 
} 
echo json_encode($out);  

?> 

Когда я вырывать файл в браузере, я могу видеть JSON и в правильном формате:

[{"":"","FOR_PARTNER":"0000111222","FOR_NAME":"CUSTOMER1 "},{"":"","FOR_PARTNER":"0000333111","FOR_NAME":"CUSTOMER2"}] 

Вот это Jquery я пытался использовать для извлечения JSON:

$(document).ready(function() 
{ 
    $.ajax({ 
    type: 'GET', // not sure if I should use POST or GET 
    url: 'api/exceptions_all.php', 
    dataType: 'json', 
    async: false, 
    data: data, 
    success: function(data) 
    { 
     console.log(data); // I'm guessing the success is where I should populate the table rows 
    }, 
    fail: function() 
    { 
     console.log('fail'); 
    } 
    }); 
}); 

Вот это HTML белый прежде чем я первоначально установить таблицу:

<table class='table table-bordered display nowrap' id='example1' cellspacing='0' width='100%'> 
<thead> 
<tr> 
    <th><!--column used for editing--></th> 
    <th>Partner Code</th> 
    <th>Partner Name</th> 
</tr> 
</thead> 
<tbody id="tableBody"> 
<!-- this is where the datatable rows should be displayed --> 
</tbody> 
</table> 

Далее в этом же файле HTML, я форматировать DataTable (теперь, когда я думаю об этом, я не уверен, что мне это нужно):

<script type="text/javascript"> 
table = $('#example1').DataTable({ 
    "iDisplayLength": 25, 
    "autoWidth": true, 
    "scrollX": true, 
    "scrollY": 550, 
    "stateSave": true, 
    "dataType": "json" 
}); 
</script> 

со всем этим делать, я получаю ошибку консоли, которая гласит:

Uncaught ReferenceError: данные не определен

у меня было это раньше, и не смог оправиться от него.

Пожалуйста, помогите мне исправить это, чтобы я мог получить JSON и заполнить datatable.

Благодарим вас заблаговременно.

+0

'data: data,' в вашем коде jQuery ... Возможно, вы хотите инициализировать переменную данных перед отправкой через ajax или вообще не включать ее, если не требуется. –

ответ

1

Вы не передаете данные через AJAX на свой скрипт PHP 'api/exceptions_all.php'.

Так что вам не нужна эта строка в коде JQuery

data: data

Удалить это и ошибка, которую вы получите должна исчезнуть

+0

Кажется, вы правы. Я смог удалить ошибку. Теперь я должен иметь возможность заполнять таблицу в функции успеха. Правильно ли это звучит? –

+0

В вашей функции 'success' у вас теперь есть данные, которые вернули ваш php-скрипт. Таким образом, вы можете делать с ними все, что хотите, заполнять таблицу и т. Д. –

+0

Спасибо, сэр. Это очень помогло мне. –

1

Пар вещей. Поскольку @GeorgePant говорит, что вам не нужен параметр data, если у вас нет предложения WHERE в вашем SQL, поскольку вы ничего не передаете своему скрипту PHP. Другое дело, что если вы делаете синхронный вызов (я бы не без оснований, особенно если вы делаете это просто потому, что не знаете, как обращаться с асинхронным), то вы не используете success параметр. Скорее, ваши данные возвращаются в свойстве responseText. Это принимает такую ​​форму:

var x = $.ajax({yadayada}).responseText; 

success внутренняя функция обратного вызова, которая вызывается, когда реакция завершена. Подумайте об этом так. Синхронный имеет форму «иди, получай эти данные, я подожду, пока не получишь». Асинхронный имеет форму «иди, получай эти данные, и дайте мне знать, когда у вас есть». Если вы делаете первое, тогда вам нужны только данные. Если вы делаете последнее, вам нужно сначала получить уведомление о том, что данные прибыли, а затем вам нужны данные.Параметр success (который, кстати, был заменен функцией done() - вперед и вверх и все такое) - это уведомление, а функция, которую вы прикрепляете к нему, имеет ваши данные, доступные для него в качестве параметра.

Причина, по которой синхронные звонки устарели, заключается в том, что они не позволяют пользователю делать что-либо еще со страницей до завершения вызова. Это не значит, что их никогда не следует использовать. Примером хорошей причины для использования синхронного вызова является это. У меня есть приложение, которое не работает в Интернете; скорее это внутреннее приложение db, которое использует браузер для контейнера. Если пользователь вводит номер запаса в поле, я хочу посмотреть, был ли этот номер запаса введен или нет, и сообщите пользователю, если он есть. Я не хочу, чтобы пользователь покидал поле, если он вводит повторяющийся номер. Это означает, что я хочу предотвратить активность браузера, пока я просматриваю номер; это означает синхронный вызов.

+0

Я буду помнить об этом. Спасибо, сэр. –

1

Проблема возникает из-за того, что вы не указали данные переменной , поэтому попробуйте удалить данные: строка данных, похоже, что вы просто получаете файл JavaScript, который обычно не принимает строку запроса:

$(document).ready(function() 
{ 
    $.ajax({ 
    type: 'GET', // not sure if I should use POST or GET 
    url: 'api/exceptions_all.php', 
    dataType: 'json', 
    async: false, 
    success: function(response) 
    { 
     console.log(response); 
    }, 
    fail: function() 
    { 
     console.log('fail'); 
    } 
    }); 
}); 

Также попытался использовать другую переменную вместо данных в ajax-успехе.

Смежные вопросы