Пустая функция $ .post () в jQuery

0

У меня есть приложение чата, которое вызывает $.post() каждую пару секунд.

var currentPage = "chat-room-1";
var myJSONString = null;

$.post("getJSON.php?view_page=currentPage", function(response) {
    myJSONstring += response; 
});

Каждый $.post() возвращает и добавляет все новые записи в базу данных для моего текущего чата.

Каждый раз currentPage изменения переменных я набор myJSONstring в null (я иду в другой чат)

Проблема возникает, когда я изменить currentPage переменного в то время как $.post() обрабатываются, но не возвращаются значения еще, потому что сервер занимает больше времени, чтобы обработать его. Это создает экземпляр, который добавляет старые данные чата и новые данные в myJSONstring в myJSONstring.

Решение. Я вижу, что в любое время я меняю currentPage Я также лишаю никаких функций $.post() которые еще не вернули значение. Это возможно?

  • 5
    Не проблема, но: вы не можете объединить строки JSON и не можете объединить их с null . Используйте массив [] и отправьте проанализированные результаты из ответа на него.
Теги:
post
chat

2 ответа

0

Назначить вызов ajax с помощью функции IIFE и игнорировать ответ, если чат изменился.

var currentPage = "chat-room-1";
var myJSONString = null;

(function(chatRoom) {
    $.post("getJSON.php?view_page=" + chatRoom, function(response) {
        if (chatRoom == currentPage) {
            myJSONstring += response; 
        }
    }); 
})(currentPage);

PS: Я скопировал ваш код в своем ответе. Но вы должны прислушаться к совету @Bergi (+1).

0

вы можете прервать запрос ajax следующим образом:

var jqxhr = $.post("getJSON.php?view_page=currentPage", function(response) {
    myJSONstring += response; 
});

jqxhr.abort();

но не уверен, что он на 100% надежный в вашем случае.

другим решением может быть размещение вашего содержимого чата в массиве. И верните текущую страницу в ответе сервера.

var currentPage = "chat-room-1";
var chatRoomStr = [];
chatRoomStr[currentPage] = '';

$.post("getJSON.php?view_page=currentPage", function(response) {
    chatRoomStr[response.currentPage] += response.chatContent; 
});
  • 0
    Не забудьте установить эти переменные на пустые строки, чтобы иметь возможность объединяться.
  • 0
    Вы правы, отредактировано.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню