Как 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, время: 20:10. |