我正在尝试遍历数组,并为for循环分配变量。所以像这样:
function Person(name, status){
this.name = name;
this.status = status;
}
var status = [];
var array = ["bill","bob","carl","ton"];
function exAjax(function(){
for(var i = 0; i < array.length; i++){
var name = array[i];
console.log(name); =====> this gives the correct name
$.ajax({
url: xxxxxxx,
success: function(data){
if(data.stream === null){
var person = new Person(name, "dead");
console.log(name); =====> return undefined until the last
person
status.push(person);
}
}
})
name = "";
}
})
我遇到的问题是名称没有进入成功功能。我以为js会继续向上查找该变量,如果它在当前作用域中不存在?如果尝试console.log
name,我将无法为name变量定义!示波器大师我在做什么错?
您可以使用.queue()
,$.map()
以保持范围name
。此外,改变status
阵列的具有属性的对象status
,其中值是一个数组,以防止可能出现的冲突this.status
的Person
对象。
请注意,您也可以连接.promise(/* queueName */)
在执行任务.then()
时,在所有排队的功能queueName
,IEG,"status"
一直呼吁,queueName
.length
是0
。
function Person(name, status){
this.name = name;
this.status = status;
}
var blob = new Blob(['{"stream":null}'], {type:"application/json"});
var url = URL.createObjectURL(blob);
// change `status` array reference, e.g., to `arr`
var arr = {status:[]};
var array = ["bill","bob","carl","ton"];
$(arr).queue("status", $.map(array, function(curr) {
return function(next) {
var name = curr;
// do asynchronous stuff
$.ajax({url:url, dataType:"json"})
.then(function(data) {
if(data.stream == null){
var person = new Person(name, "dead");
console.log(name, person);
arr.status.push(person);
}
})
.then(next) // call next function in `"status"` queue
}
}))
.dequeue("status")
.promise("status")
// do stuff when all functions in `"status"` queue have completed,
// `"status"` queue `.length` is `0`
.then(function() {
// `this` : `arr` as jQuery object
// `this[0].status`: array containing objects pushed to `arr.status`
console.log(this[0].status); // $(this).prop("status");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
jsfiddle https://jsfiddle.net/nnayjckc/2/
您也可以使用$.when()
,.apply()
,$.map()
,返回相同的结果
function Person(name, status) {
this.name = name;
this.status = status;
}
var blob = new Blob(['{"stream":null}'], {
type: "application/json"
});
var url = URL.createObjectURL(blob);
// change `status` array reference, e.g., to `arr`
var arr = {
status: []
};
var array = ["bill", "bob", "carl", "ton"];
$.when.apply($, $.map(array, function(curr) {
var name = curr;
return $.ajax({
url: url,
dataType: "json"
})
.then(function(data) {
if (data.stream == null) {
var person = new Person(name, "dead");
console.log(name, person);
arr.status.push(person);
}
})
}))
.then(function() {
console.log(arr.status)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
jsfiddle https://jsfiddle.net/nnayjckc/3/
问题内容: 随着框架的发展,我决定将其拆分为文件,而不是将其保留在主设计文件中。但是通过这样做,函数的返回不会返回任何值。 数据不为空-如果我警告js文件中的值,它们在那里! 功能: 1 .js文件中的函数(在执行之前包含) 因此,这是执行部分: 并且测试是空的…我已经尝试了不同的编写方式,但是我想我误解了js的可能性吗? 问题答案: 您不能这样做:由于调用是异步的,因此get_data函数无法返
主要内容:1. 变量的命名规则,2. 定义变量,3. 为变量赋值,4. 变量提升,5. let 和 const 关键字变量是所有编程语言的基础之一,可以用来存储数据,例如字符串、数字、布尔值、数组等,并在需要时设置、更新或者读取变量中的内容。我们可以将变量看作一个值的符号名称。 1. 变量的命名规则 在 JavaScript 中,变量名称并不能随便定义,需要遵循标识符的命名规则,如下所示: 变量名中可以包含数字、字母、下划线、美元符号; 变量名中不能出现汉字; 变量名中不能包含空格; 变量名不能
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。 变量就是存放一些内容的容器。 对于初学者,理解变量是重要的一环。 从分析变量这个名词,可以知道他是一个可以改变的量,这里的量就是代表某一种值。 在 JavaScript 中,变量就是一个用来存放值的容器,并且可以对容器中的值做修改。 每个变量都有唯一的变量名,使用变量名来区分变量。 1. 声明变量 在 JavaScript 中使用v
问题内容: 我试图将变量从我的javascript代码传递到服务器端PHP代码。我知道这必须通过ajax调用来完成,我相信我已经正确地完成了,但是访问变量是从我的ajax传递到我的php时遇到的麻烦,因为我是php的新手。到目前为止,这是我的代码: 我正在尝试将我的JavaScript变量“ userID”传递给php($ userID),但是在此过程中我出错了。谢谢您的帮助! 问题答案: 将这样
问题内容: 目前,我正在使用Ajax来开发现有脚本,这是我以前从未使用过的东西。我在javascript文件中设置了一个变量,该变量从页面上的输入字段获取其值。我只需要使用Ajax将其发布到我的PHP页面,不知道从哪里开始, 我不确定您需要查看什么代码,但是我的javascript / AJAX代码是,我需要传递的变量是’var credoff’ 一定要采用这种格式吗? 问题答案:
你好,朋友,一个新手问题。我是编程新手,所以请温柔一点。 我试图使用JavaScript发布多个会话变量,这样我就可以在以后的PHP中的多个地方使用它们。 我的index.php文件 我的vals.js文件 我的session.php档案 我知道代码很乱,但我不知道如何编写正确的语法。我实际上试图修改一个变量代码,但失败了。因此需要帮助。 其思想是将从各种JavaScript函数派生的各种值发布到