X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Бесконечный запрос ajax
Wins
Wins
Topic Starter сообщение 29.1.2015, 13:52; Ответить: Wins
Сообщение #1


Здравствуйте!

Имеется такая вот проблемка

[JS] graph.prototype.AddElementMenu = function(dx, dy, type, txt)
{
var _this = this;

this.graphs[this.count].onclick = function() {

if(_this.graphType != this.type)

{_this.graphType = this.type; _this.getChannels();}

}

this.count++;

};// сюда передается getChannels с готовым ответом


graph.prototype.generateAjax = function(){ // запрос на сервер

var b;
for(var i = 0; i < 4; i++){
if(this.b[i].checked)
{
b = i;
break;
}

}

var Ajax ={};

Ajax.type = "POST";

Ajax.error = defaultErrorHandler;

// тут продолжает формироваться запрос на сервер

return Ajax;

};



graph.prototype.getChannels = function()// получение ответа с сервера
{
var _this = this;

var ajaxdata = this.generateAjax();

ajaxdata.success = function(res, status, xhr)
{
_this.UpdateChannels(ajax);
}
var ajax = $.ajax(ajaxdata);


};
[/JS]
В итоге при переходе на страницу, запросы на сервер идут бесконечно, т.е это код который находится внутри

graph.prototype.generateAjax выполняется постоянно, как это можно исправить, без координального изменения кода?

сейчас например получится следующее

Object {type: "POST", error: function, data: Object, url: "урла"}
Object {type: "POST", error: function, data: Object, url: "урла"}
Object {type: "POST", error: function, data: Object, url: "урла"}
и т.д. один и тот же запрос.

P.S. это не весь код, и лишнее из функций так же по убирал, но кажется мне что проблема именно в этих 3 функциях
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 29.1.2015, 16:06; Ответить: Degradator
Сообщение #2


сделай вот так например
[JS]graph.prototype.getChannels = function()// получение ответа с сервера
{
var _this = this;

var ajaxdata = this.generateAjax();

ajaxdata.success = function(res, status, xhr)
{
setTimeout(function(){_this.UpdateChannels(ajax);}, 3000)
}
var ajax = $.ajax(ajaxdata);


};[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
Topic Starter сообщение 29.1.2015, 16:56; Ответить: Wins
Сообщение #3


(Degradator @ 29.1.2015, 18:06) *
сделай вот так например

Не помогает, все равно запрос дублируется бесконечно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 29.1.2015, 17:40; Ответить: Degradator
Сообщение #4


но теперь с ожиданием в три секунды? Или нет?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
Topic Starter сообщение 29.1.2015, 18:05; Ответить: Wins
Сообщение #5


Нет запросы как шли так и идут, та и ожидание зачем?

Ведь когда много данных страница просто виснет, потому что POST на сервер идут один за другим без остановки, ну даже если и получится с интервалом, все равно не то. Зачем сотни одинаковых запросов отправлять. Просто код не я писал, но исправить надо, но как побороть эти запросы хз.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 29.1.2015, 18:35; Ответить: Degradator
Сообщение #6


$.ajax(ajaxdata); - по идее вот эта строчка отправляет запросы. Проверь, так ли это. Если да, то тогда смотри откуда вызывается функция graph.getChannels и главное зачем. Не думаю что это сделали просто так, скорее всего что-то сломалось, и приходит ответ с ошибкой.
ps поскольку функция идет в прототип, то думаю что надо искать объект, который создается как-то так
var object = new graph();
Может быть у тебя на странице просто создаются в цикле эти объекты.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
Topic Starter сообщение 30.1.2015, 4:57; Ответить: Wins
Сообщение #7


Не, var ajax = $.ajax(ajaxdata); это уже идет объединение запроса.

Есть функция graph.prototype.generateAjax , она делает отправку запроса на сервер

graph.prototype.getChannels - это уже готовый ответ с сервера, тут я один раз получаю запрос и ответ

[JS]graph.prototype.AddElementMenu = function(dx, dy, type, txt)
{
this.graphs[this.count].onclick = function() {if(_this.graphType != this.type){_this.graphType = this.type; _this.getChannels(); _this.closeMenu()}}
}[/JS]
и вот в graph.prototype.AddElementMenu идет вызов по онклик _this.getChannels(),

получается по онклик в функции getChannels я один раз получаю запрос и ответ,

а далее в generateAjax продолжают идти запросы, по новому.

В эту функции помещая любой код выполняется постоянно. т.е. если я напишу alert(false) - то будут без остановки появляться окна алерт, закрою одно, выскочит сделующее и т.д

Пфф там получается запрос идет в двух функциях получается один раз в getChannels, и не определенное кол-во запросов в .generateAjax :wacko:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
Topic Starter сообщение 30.1.2015, 10:50; Ответить: Wins
Сообщение #8


И еще один момент что бесконечные запросы идут когда заходишь на страницу, а когда выполняешь сортировку, которая использует тот же код, то запрос выполняется как положено один раз
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 30.1.2015, 15:14; Ответить: Degradator
Сообщение #9


(Wins @ 30.1.2015, 06:57) *
Не, var ajax = $.ajax(ajaxdata); это уже идет объединение запроса.


(Wins @ 30.1.2015, 06:57) *
и вот в graph.prototype.AddElementMenu идет вызов по онклик _this.getChannels(),
получается по онклик в функции getChannels я один раз получаю запрос и ответ,
а далее в generateAjax продолжают идти запросы, по новому.
В эту функции помещая любой код выполняется постоянно. т.е. если я напишу alert(false) - то будут без остановки появляться окна алерт, закрою одно, выскочит сделующее и т.д
Пфф там получается запрос идет в двух функциях получается один раз в getChannels, и не определенное кол-во запросов в .generateAjax


Увы, я не могу ничем помочь. Надо смотреть код.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
Topic Starter сообщение 30.1.2015, 17:48; Ответить: Wins
Сообщение #10


(Degradator @ 30.1.2015, 17:14) *
Увы, я не могу ничем помочь. Надо смотреть код.

Ясно, там много кода, могу только в личку, но врядли ты захочешь в нем разбираться XD

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Запрос на бесплатные полезности
7 Tia2 1960 23.3.2024, 11:27
автор: Alexand3r
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44910 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Куплю сайты, внутри темы подробный запрос
3 PticaKate 3650 12.11.2019, 16:22
автор: 0pium
Открытая тема (нет новых ответов) Ищу специалиста Wordpress/PHP/JS/AJAX
5 by_roXe 4309 4.11.2018, 17:09
автор: kikimora17
Открытая тема (нет новых ответов) убрать GET запрос с URL
Сделать ЧПУ ссылок
18 WoWeb 9963 28.10.2016, 17:18
автор: WoWeb


 



RSS Текстовая версия Сейчас: 20.4.2024, 4:51
Дизайн