Проверьте ответ Ajax на запрос - PullRequest
0 голосов
/ 25 марта 2011

Есть ли в ajax и / или jquery какие-либо средства, с помощью которых я могу проверить, получен ли ответ на конкретный запрос, который я отправил?

Чтобы было понятнее. У меня есть страница поиска thts, разделенная на две части, верхняя часть - это раздел критериев поиска, а вторая часть - соответствующие результаты. По умолчанию выбираются первые 20 записей. Раздел результатов периодически обновляется с помощью ajax-запроса. Пользователь может выбрать фильтрацию предоставленных результатов. Это также происходит через ajax.

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

Поскольку фильтр пользователей имеет более высокий приоритет, чем фоновое обновление, мне нужно прервать фоновое обновление, когда обнаруживается, что пользователь запросил определенный файл-файлер. Существуют ли какие-либо средства проверки ответа ajax и проверки того, что этот ответ соответствует фоновому запросу или запросу конкретного пользователя?

Я приложил все усилия, чтобы объяснить запрос, но, если понадобится дополнительная информация, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Может быть, вы можете сохранить $ .ajax () возвращаемый объект фонового запроса и прервать его по запросу пользователя:

// global
var bgAjax;

// In you treatment og background
bgAjax = $.ajax(...);

// Abort
bgAjax.abort();
0 голосов
/ 25 марта 2011

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

Я не знаю, на что похожи ваши ajax-ответы, так что это должно быть абстрактно, но Я полагаю, ваш ajax-ответ - либо HTML, либо JSON.

Когда вы делаете ответ на запросы, указанные пользователем, просто добавьте какой-нибудь флаг, чтобы указать, что это произошло.

HTML: добавьте это к коду, который, вероятно, где-то добавлен на вашу страницу w / innerhtml

<input type="hidden" id="user-defined-filter" value=1 />

JSON: добавить это к объекту JSON ответа. Я назову это ajaxResponse1

{user-defined-filter: 1}

А затем поставьте условное выражение перед автоматическим обновлением, например

if (!$("user-defined-filter").val()) {//auto-refresh stuff

OR

if (!ajaxResponse1.user-defined-filter) {//auto-refresh stuff
...