Входящие данные ajax и условные выражения "если" ...? - PullRequest
0 голосов
/ 03 июля 2019

Довольно плохо знаком с кодированием, извините, если это просто ...

Я работаю над веб-приложением, в котором нажатие кнопки «Поиск» запускает ajax-запрос для получения набора данных, который затем используется для заполнения таблицы с использованием метода jQuery .DataTable.

То, что я пытаюсь сделать, - это получить одно и то же событие нажатия кнопки поиска, чтобы отобразить ту или иную ссылку, в зависимости от того, что находится в возвращаемых данных, на отдельной части страницы.

Более конкретно, событие щелчка для поиска извлекает записи / строки, которые являются либо "счетами", либо "инициативами", и один поиск может извлекать записи обоих типов (если для данного числа существуют оба типа, что является критерием поиска) ). В таблице не отображается столбец, указывающий, какой тип записи, но эта информация должна быть частью объекта, возвращаемого из вызова ajax (я думаю?); у каждой записи есть поле с именем «request_type», которое имеет «B» для счета, «I» для инициативы.

Если пользователь выполняет поиск по номеру, в котором есть записи об инициативе, я хочу, чтобы ссылка на информацию об инициативе появлялась за пределами таблицы в другом элементе div. Если номер имеет записи счета, должна появиться другая ссылка. Если это и то и другое, то должны появиться две ссылки - по одной на каждую.

Я понимаю, что в конечном итоге я хочу условное, как

if (???something saying initiatives and bills are in the returned data???) {

$('#url1Div').html("<a href='" + newURL1 + "' target='_blank'>View bill information</a>");

$('#url2Div').html("<a href='" + newURL2 + "' target='_blank'>View initiative information</a>");

} else if (???just initiatives?? {

$('#url2Div').html("<a href='" + newURL2 + "' target='_blank'>View initiative information</a>");

} else if (???just bills???) {

$('#url1Div').html("<a href='" + newURL1 + "' target='_blank'>View bill information</a>");

};

Я просто не знаю, как должны выглядеть эти условные выражения, учитывая, что я пытаюсь работать с возвращаемым объектом с данными.

Сначала я пытался просто прочитать информацию из одного из столбцов разметки отображаемой таблицы, например

var initiativeExists;

$('#table tr td:nth-child(3)').each(function () {
                            var texttocheck = this.innerText.trim();
                            if (texttocheck.includes("I")) {                            
                                initiativeExists = true;
                                return false;
                            } 
                            return false;
                        });

Тогда мои условия были просто установлены на какую-то версию if (initExists) {// делать то, что нужно}. Но это не сработало до тех пор, пока таблица не была уже заполнена, и кажется грязным пытаться что-то прочитать из разметки, когда мне нужно иметь необработанные данные для работы.

Soo ....

Мне просто не хватает некоторого способа ожидания возврата данных, а затем проверки, чтобы определить, относятся ли какие-либо записи к типу "I".

Любая помощь оценена, уточню, как смогу. Приветствия

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

В итоге я решил ее, написав отдельную функцию обратного вызова с логикой отображения ссылки, а затем использовал опцию «initComplete» для .DataTable ().Я использовал ту же функцию обратного вызова в той части моего кода, которая вызывает ajax.reload ().

0 голосов
/ 03 июля 2019

Попробуйте создать отдельный запрос AJAX для извлечения данных, чтобы вы могли выполнить дополнительную логику, которую вы хотите. Затем присвойте результаты переменной, чтобы вы могли передать ее в таблицу данных, предполагая, что это та же библиотека данных, которую вы используете https://datatables.net/manual/data/.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...