Как ajax запрос присвоить переменной
Вот есть код
setInterval(function() { $.ajax({ type: "POST", url: "/mnemo_1.php", //data: "func=1", dataType: "text", success: function (data){data;}, error: function(){alert('Problem');} }) }, 3000); var s1 = new draw2d.Server("any_pkey1", [B]data[/B],"up"); workflow.addFigure(s1, 100,100);}, как мне аякс запрос присвоить переменноый и чтоб она выводилась в об ъекте s1. |
Вот там где у тебя data так скромненько спряталась и ничего не делает:
success: function (data){data;//<-- вот там и надо ее использовать. |
Цитата:
|
Что значить присвоить переменной аякс запрос?
Переменная это - переменная, аякс запрос - это процесс. Если не знаешь как этот процесс работает, то изучай. Основы javascript также подтяни скорее всего(т.к. некаешь на мой первый ответ, очевидно основ не знаешь) |
понятно. на этом форуме как всегда народ толи делает вид что непонимает толи вообще не в тему отвечает.
спасибо. |
Я имею в виду как мне вытащить ту переменную data за рамки аякс запроса. Присваивание другой переменной не помогает. Как мне вытащить эту переменную?? у меня нет возмонжости засунуть весь код в функцию data ибо в этом случае объекты будут создаватся тоже раз в 3 сек.
|
разобрался. вот так работает:
//setInterval(function() { var data1 = $.ajax({ type: "POST", url: "/mnemo_1.php", //data: "func=1", 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); НО стоут убрать комментирование как он выводит просто число 2. В общем как мне сделать чтобы аякс запрос делался раз в 3 сек. |
setInterval? |
Цитата:
|
Более того, что если сделать вот так (то есть присвоить функцию переменной:
var data1 = function zapros(){$.ajax({ type: "POST", url: "/mnemo_1.php", //data: "func=1", dataType: "text", async: false, success: function (data){ var data;}, error: function(){alert('Problem');} }).responseText;}; ТО он будет выводить текст функции.... |
Цитата:
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 сек остановка результаты одинаковые |
Цитата:
|
:-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); |
Мне кажется вы меня не поняли. Объясню подробнее.
вот код (сюда ваш внедрил уже): 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 я пока что не силен. |
Цитата:
самый лучший способ ( для обновления переменной) - это написать метод 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 - поэтому я задал вопрос здесь. |
Цитата:
|
Цитата:
|
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. |
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 секунды. Никак не получается это реализовать. Прошу помощи. |
Ну что неужели никто не подскажет как??
|
Народ ну так как это реализовать. Если сетинтервал ставить поверх функции, то в том месте где должно быть число он будет писать Undefined ибо когда программа первый раз прочитывает файл, то в переменную еще ничего не упевает записатся. ВТорой же раз программа естественно не будет проходить по файлу. так как же тогда быть?
|
function ajaxf(indata,outdata,url){
//загрузка результата ajax=getAjax(); var param; if (ajax != null) { // метод POST, указываем просто имя файла ajax.open("POST","index.php?task="+url,true); // если параметров несколько, то они разделяются & param=indata; // добавляем стандартный заголовок http // посылаемый через ajax ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // вроде эти могут тормозить ajax.setRequestHeader("Content-length", param.length); ajax.setRequestHeader("Connection", "close"); ajax.onreadystatechange = function(){ if(ajax.readyState==4 && ajax.status==200) // document.getElementById(outdata).innerHTML=ajax.re sponseText; return ajax.responseText; } // посылаем наши данные или пустую строку (param="") // главное не null ajax.send(param); } } А как тут передать в переменную |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 22:23. |