从事件返回值 onreadystatechange in AJAX 中
Returning values from the event onreadystatechange in AJAX
我正在尝试为下面的代码中的变量val
赋值:
var cmdValue = "/cmd/fetch?x=";
var val;
var returned_data;
function what(){
val = update('#TAG#');
}
function update(tag) {
var req1 = newXMLHttpRequest();
req1.open("GET",cmdValue + tag, true);
req1.send("");
return req1.onreadystatechange= function () {
if (req1.readyState == 4 && req1.status == 200) {
returned_data = req1.responseText;
return returned_data;
}else{
}
};
}
我正在跟踪Firebug中的变量,事实证明val
被分配了函数。有没有办法让代码运行,然后将值分配给变量val
?
在异步编程中,您不会return
数据,因为您不知道该数据何时可用 - 它是异步的。
进行异步编程的方法是使用事件和/或回调。
例:
var cmdValue = "/cmd/fetch?x=";
var val;
var returned_data;
var performSomeAction = function(returned_data) {
val = returned_data;
}
function what(){
update('#TAG#', performSomeAction);
}
function update(tag, callback) {
var req1 = new XMLHttpRequest();
req1.open("GET", cmdValue + tag, true);
req1.send("");
req1.onreadystatechange= function () {
if (req1.readyState == 4 && req1.status == 200) {
returned_data = req1.responseText;
//fire your callback function
callback.apply(this,[returned_data]);
} else {
}
};
}
这个问题是SO上最常见的问题之一,至少在javascript标签方面 - 请在问自己的问题之前搜索类似的问题。
// should have a space after new or was did u notice it
var req1 = new XMLHttpRequest();
相关文章:
- Ajax Call with Post in PHP
- NS_ERROR_DOM_BAD_URI in AJAX
- JQuery / $.ajax /alert in .fail,但它成功了
- TokenMismatchException in laravel 5.2 ajax call
- GetComputedStyle In Ajax Callback
- ColdFusion built-in AJAX vs JQuery or ExtJS
- Jquery AJAX response JSON in variable.
- AJAX in Django rendering JSON
- 从事件返回值 onreadystatechange in AJAX 中
- Codeigntier/AJAX - 致命错误:调用未定义的函数 form_input() in
- AJAX 请求混淆 in jQuery.
- ajax in wordpress and wp_query
- Jquery ajax in .each 如何在整个 .each 完成时触发函数
- Learnings AJAX in Django
- AJAX in jquery 不起作用
- jQuery爬网程序大对象/$.each/Ajax IN然后是Ajax OU
- How to make a respond_to by AJAX in Rails 3?
- ajax in internet explorer 8.0
- Ajax in Laravel
- lnk with database with ajax in html