Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как ajax запрос присвоить переменной (https://javascript.ru/forum/jquery/16335-kak-ajax-zapros-prisvoit-peremennojj.html)

melky 04.04.2011 20:17

Цитата:

Сообщение от zeraid (Сообщение 99260)
разобрался. вот так работает:

setInterval(function() {
var data1 = $.ajax({
   type: "POST",
   url: "/mnemo_1.php",
   dataType: "text",
   async: false,
   success: function (data){data;},
   error: function(){alert('Problem');}
 }).responseText;
}, 3000);

       var s1 = new draw2d.Server("any_pkey1", data1,"up"); 
	 workflow.addFigure(s1, 100,100);


function loop( callback ){

var t = setInterval(function(){
   
d = $.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл, там текст "GOOD"
   dataType: "text",
   async: false,
   data: { func: 1 }

  
 }).responseText;

callback( d );

},1000);

this.stop = function(){ clearInterval(t); }

};//l


var t = new loop( console.log ); 


setTimeout( function(){t.stop();},3000) // через 3 сек остановка


в консоли выводит GOOD три раза

тут не могу запустить (скрипты запускается в ифрейме и на testbin)

еще так




function loop( callback ){

var t = setInterval(function(){
   
$.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл, там текст "GOOD"
   dataType: "text",
   async: false,
   data: { func: 1 },
   error: function(){alert('Problem');},
   success : function(data) { callback(data); }

  
 }).responseText;

},1000);

this.stop = function(){ clearInterval(t); }

};//l


var t = new loop( console.log ); 


setTimeout( function(){t.stop();},3000) // через 3 сек остановка


результаты одинаковые

zeraid 04.04.2011 21:27

Цитата:

Сообщение от melky (Сообщение 99277)
function loop( callback ){

var t = setInterval(function(){
   
d = $.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл, там текст "GOOD"
   dataType: "text",
   async: false,
   data: { func: 1 }

  
 }).responseText;

callback( d );

},1000);

this.stop = function(){ clearInterval(t); }

};//l


var t = new loop( console.log ); 


setTimeout( function(){t.stop();},3000) // через 3 сек остановка


в консоли выводит GOOD три раза

тут не могу запустить (скрипты запускается в ифрейме и на testbin)

еще так




function loop( callback ){

var t = setInterval(function(){
   
$.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл, там текст "GOOD"
   dataType: "text",
   async: false,
   data: { func: 1 },
   error: function(){alert('Problem');},
   success : function(data) { callback(data); }

  
 }).responseText;

},1000);

this.stop = function(){ clearInterval(t); }

};//l


var t = new loop( console.log ); 


setTimeout( function(){t.stop();},3000) // через 3 сек остановка


результаты одинаковые

не очень понел что вы этим хотели сказать.... я тут вижу то, что вы просто сдлелали чтобы через 3 сек запрос прекращался..... у меня же проблема описанная выше.

melky 04.04.2011 22:16

:-E

развернуть ->
function loop( callback ){


/* интервал */
var t = setInterval(function(){ 
   
d = $.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл, там текст "GOOD"
   dataType: "text",
   async: false,
   data: { func: 1 }

  
 }).responseText;

callback( d );

},1000);

/* 

каждую секунду будем отправлять запрос на файл И вызывать указанную в callback функцию

*/

this.stop = function(){ clearInterval(t); }

};//l



var t = new loop( console.log );  
// если сохраним t, сможем прекратить вызовы этим -> t.stop()


или вот, заинлайненная функция

развернуть ->
/*
 каждую секунду берет файл с сайта и делам с содержимым , что хотим
*/

var t = setInterval(function(){
   
$.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл
   dataType: "text",
   async: false,
   data: { func: 1 },
   error: function(){alert('Problem');},
   success : function(data) { 

          /* делаем,что хотим ! в data результат запроса*/
            alert(data);
   }

  
 });

},1000);


/* остановить повтор */
clearInterval(t);

zeraid 04.04.2011 22:26

Мне кажется вы меня не поняли. Объясню подробнее.

вот код (сюда ваш внедрил уже):

function loop( callback ){
var t = setInterval(function(){
$.ajax({
   type: "POST",
   url: "/mnemo_1.php",
   //data: "func=1",
   dataType: "text",
   async: false,
   success: function (data){callback(data);},
   error: function(){alert('Problem');}
 }).responseText;},1000);

this.stop = function(){ clearInterval(t); }

};//l

var t = new loop( console.log );
setTimeout( function(){t.stop();},3000)

  var s1 = new draw2d.Server("any_pkey1", СЮДА НАДО ВСТАВИТЬ ПЕРЕМЕННУЮ ИЗ AJAX,"up"); 
	 workflow.addFigure(s1, 100,100);


у меня создается объект в котором высвечивается температура, которая берется из аякс запроса. И мне надо чтобы она бралась каждые 3 секунды и выводилась в обект. ВНУТРЬ SUCCESS вставить судя по всему не выйдет ибо вместе с запросом будет создаватся еще один объект и тд.

И мне хотелось бы узнать как это можно реализовать ибо в JS я пока что не силен.

melky 04.04.2011 22:50

Цитата:

Сообщение от zeraid (Сообщение 99294)
Мне кажется вы меня не поняли. Объясню подробнее.

вот код (сюда ваш внедрил уже):

function loop( callback ){
var t = setInterval(function(){
$.ajax({
   type: "POST",
   url: "/mnemo_1.php",
   //data: "func=1",
   dataType: "text",
   async: false,
   success: function (data){callback(data);},
   error: function(){alert('Problem');}
 }).responseText;},1000);

this.stop = function(){ clearInterval(t); }

};//l

var t = new loop( console.log );
setTimeout( function(){t.stop();},3000)


у меня создается объект в котором высвечивается температура, которая берется из аякс запроса. И мне надо чтобы она бралась каждые 3 секунды и выводилась в обект. ВНУТРЬ SUCCESS вставить судя по всему не выйдет ибо вместе с запросом будет создаватся еще один объект и тд.

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

самый лучший способ ( для обновления переменной) - это написать метод update() внутри объекта,который принимает число.

потом через ajax-success вызывать update с parseInt(date) в качестве аргумента.

или же каждый раз создавать новый объект

setInterval(function(){
   
$.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл
   dataType: "text",
   async: false,
   data: { func: 1 },
   error: function(){alert('Problem');},
   success : function(data) { 

         var s1 = new draw2d.Server("any_pkey1", data,"up"); 
	 workflow.addFigure(s1, 100,100);
   }

  
 });

},1000);



откуда у вас этот объект?

zeraid 04.04.2011 22:56

Цитата:

Сообщение от melky (Сообщение 99298)
у вас создается объект, который принимает число. через аякс надо обновлять это число.

самый лучший способ ( для обновления переменной) - это написать метод update() внутри объекта,который принимает число.

потом через ajax-success вызывать update с parseInt(date) в качестве аргумента.

или же каждый раз создавать новый объект

setInterval(function(){
   
$.ajax({

   type: "POST",
   url: "/ajax.html", // локальный файл
   dataType: "text",
   async: false,
   data: { func: 1 },
   error: function(){alert('Problem');},
   success : function(data) { 

         var s1 = new draw2d.Server("any_pkey1", data,"up"); 
	 workflow.addFigure(s1, 100,100);
   }

  
 });

},1000);



откуда у вас этот объект?

Рад что наконец вы меня поняли.

draw2d.Server это просто картинка над которой пишется число. Если сделать так, как вы написали выше. То с каждым аякс запросом будет добавляться еще один объект.

Внутри объекта писать обновление числа не вариант ибо объектов у меня много и более того обновление числа для ВСЕХ объектов должно протекать в одном аякс запросе. Но пока я пытаюсь справится хоть с одним.

У меня звучал вопрос выше КАК мне ИЗ аякс запроса вывести то самое число которое он получает и просто подставить в свойства объекта draw2d.Server("any_pkey1", ВОТ СЮДА,"up");

Или как написать сам аякс запрос.

Скорее всего я не владею некоторыми операциями JS - поэтому я задал вопрос здесь.

micscr 05.04.2011 08:46

Цитата:

Сообщение от zeraid
Скорее всего я не владею некоторыми операциями JS

и не говори ;) Про переменные почитай, области видимости, глобальные переменные, ответ аякс-запроса. Сначала то есть, как я и советовал ...

zeraid 05.04.2011 13:31

Цитата:

Сообщение от micscr (Сообщение 99329)
и не говори ;) Про переменные почитай, области видимости, глобальные переменные, ответ аякс-запроса. Сначала то есть, как я и советовал ...

об этом я в курсе. я имею в виду что могу не знать некооторые функции и тп ибо норм документации по JS нет нигде.

zeraid 05.04.2011 13:49

var t = "";

setInterval(function(){
$.ajax({
   type: "POST",
   url: "/mnemo_1.php",
   //data: "func=1",
   dataType: "text",
   async: false,
   success: function (data){data; t = data;},
   error: function(){alert('Problem');}
 }).responseText;},1000);


я имею в виду что-то в роде этого. То есть чтобы значение из аякса записалочь в t.

zeraid 05.04.2011 14:16

function test(){ 
    var t; 
$.ajax({
   type: "POST",
   url: "/mnemo_1.php",
   //data: "func=1",
   dataType: "text",
   async: false,
   success: function (data){t = data;},
   error: function(){alert('Problem');}
 }).responseText;

 return t; 

}; 

var t = test();

       var s1 = new draw2d.Server("any_pkey1", t,"up"); 
	 workflow.addFigure(s1, 100,100);


вот так заработало. Очень удивлен почему тоже самое не работало без использования функции.

Осталось одно - сделать тож самое раз в 3 секунды.

Никак не получается это реализовать. Прошу помощи.


Часовой пояс GMT +3, время: 03:16.