2015-05-06 2 views
0

Я использую jQuerydatables и серверные скрипты с php и mysql. Я изменил сценарий, который находится здесь:datatable authentication для сценариев на стороне сервера

https://legacy.datatables.net/examples/data_sources/server_side.html 

и я включил if-else, который обернут вокруг всего скрипта.

Цель состоит в том, чтобы позволить возвращать результаты, если пользователь опубликовал действительный токен из моего db.

Так что у меня этот бит установлен. Но я не уверен, как обрабатывать сообщение об ошибке пользователю.

Прямо сейчас, когда пользователь передает недействительный токен, мой сайт (используя данные) вызывает ошибочный ответ JSON.

Я предполагаю это, потому что он ожидает, что iTotalRecords и т. Д. Вернутся в JSON.

Мне интересно, знает ли кто, как этого достичь. Я не смог найти примеров.

Алгоритм:

if (postedToken exists in db){ 
    return datatables JSON 
} 
else{ 
    return json in such a way that I can provide an alert to the user that their session has expired 
} 

и DataTable инициализации:

"sAjaxSource": "mydatatablescript.php?token=<?php echo $token;?> 

EDIT:

Я возвращался действительный JSON, но я пропускал несколько параметров, которые должны быть необходимы т.е. 'iTotalRecords' => 0, 'iTotalDisplayRecords' => 0, 'aaData' => [], 'sEcho' => 0.

Теперь я не получаю сообщение об ошибке, описанное в вопросе. Я вижу, что есть параметр «fnDrawCallback», который я могу включить в инициализацию datatable. Я подозреваю, что здесь я могу проверить свой параметр сообщения и при необходимости предупредить, но я просто не знаю, как получить доступ к JSON из этой функции?

+0

Почему вы не возвращаете только пустой JSON? – sitilge

+0

@sitilge Мне нужно указать пользователю, что срок их сессии истек. Это было бы иначе, если бы они искали что-то в таблице, которое не имеет результатов. т.е. таблица имеет параметр фильтра, который использует предоставленный скрипт и который не может возвращать результаты, но это не значит, что пользователь должен выйти из системы и вернуться в – user2363025

+0

Ну, верните пустой json и проанализируйте ответ с js/jquery на клиенте боковая сторона. – sitilge

ответ

1

Как вы уже видели, вам нужно вернуть действительный json в любом случае, если ваша клиентская сторона этого ожидает.

Вы можете сделать это, используя, например, что-то вроде:

if (postedToken exists in db){ 
    return datatables JSON 
} 
else{ 
    return json_encode(array('success': false, 'message': 'session has expired')); 
} 

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

+0

Спасибо за ответ. Мне интересно, где на моей стороне клиента я могу оповестить об этом сообщение? Обработка скрипта обрабатывается внутри инициализации данных, поэтому я не уверен, где разместить эту функцию javascript, о которой вы упомянули? – user2363025

+0

Я возвращал действительный JSON, но мне не хватало нескольких параметров, которые должны быть необходимы, т. Е. ITotalRecords => 0, iTotalDisplayRecords => 0, aaData => [], sEcho => 0. Теперь я не получаю сообщение об ошибке, описанное в вопрос.Я вижу, что есть параметр «fnDrawCallback», который я могу включить в инициализацию datatable. Я подозреваю, что здесь я могу проверить свой параметр сообщения и при необходимости предупредить, но я просто не знаю, как получить доступ к JSON из этой функции. Примите ответ, как только я получу последний бит – user2363025

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