#jquery #ajax #arrays #json
#jquery #ajax #массивы #json
Вопрос:
у меня есть следующий PHP-код:
$organization_modules = $this->getDatabase()->template('
SELECT * FROM Module Module
INNER JOIN Organization_has_Module OHOM
ON Module.id = OHOM.Module_id
WHERE OHOM.Organization_id = ' . $_SESSION['User']['org'] . '
AND Module.category_id = ' . $_POST['category_id'], MySqlTemplates::RFQ_FM);
$all_modules = $this->getDatabase()->template('SELECT * FROM Module WHERE category_id = ' . $_POST['category_id'], MySqlTemplates::RFQ_FM);
foreach ($organization_modules as $module)
{
for ($i = 0, $size = count($all_modules); $i < $size; $i )
{
if ($module['id'] == $all_modules[$i]['id'])
{
$all_modules[$i]['is_owned'] = true;
}
}
}
print json_encode($all_modules);
Теперь это возвращает следующий массив:
Однако, когда я отлаживаю его в Chrome, он говорит, что данные равны нулю:
Вот мой ajax
$.ajax({
type: 'POST',
url: '/Module/findByCategory',
dataType: 'json',
data: {
request: 'ajax',
category_id: id
},
success: function (data) {
$('#module_content').html('');
$('#module_content').prepend('<div class="col-md-12"><a href="/Modules/index" class="btn btn-primary"><i class="fa fa-arrow-left"></i> Tilbage</a></div>');
if(data.length > 0)
{});
Кто-нибудь может сказать мне, что происходит. я также просмотрел Network-> reponse, но даже в ответе говорится, что он ничего не возвращает
выходной массив
** Обновить**
Забавное замечание, если я print json_encode('hello')
Тогда i результат не равен нулю, а hello
что-то не так с моим массивом??
Обновление 2
Хорошо, итак, я попытался для развлечения выбрать всех своих пользователей и распечатать их
И ЭТО СРАБОТАЛО?
Итак, что-то явно не так с моим массивом, может быть, там есть нулевые значения?
Обновление 3
ради интереса я убедился, что ни одно значение не равно null, и теперь это работает…
ЧТО, ЧЕРТ ВОЗЬМИ, ПРОИСХОДИТ ?!?!?!?
Комментарии:
1. вместо
echo
2. @AmitSoni Как так получилось? :S
3. echo json_encode($ all_modules); похоже, не работает
4. поставьте
print_r($all_modules)
и посмотрите, что там в массиве!5. @RahulGupta Я могу отлаживать PHP с помощью Xdebug, и массив заполняется данными
Ответ №1:
Я публикую ответ в соответствии с запросом OP: был неизвестный символ (отмечен ?
на скриншоте), что, вероятно, приводит к сбою кодирования. Однако подумайте о том, чтобы перепроверить кодировку вашей базы данных, таблиц, драйвера php db и других элементов головоломки, чтобы убедиться, что это никогда не повторится, поскольку для людей совершенно нормально иметь имена с диакритическими знаками, такими как Ólafur Arnalds
Ответ №2:
ваш код выглядит правильно. Ищите ошибки / нулевые значения в массиве, созданном для вашей строки:
$all_modules = $this->getDatabase()->template('SELECT * FROM Module WHERE category_id = ' . $_POST['category_id'], MySqlTemplates::RFQ_FM);