Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从ajax调用内部将变量传递给函数_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 从ajax调用内部将变量传递给函数

Javascript 从ajax调用内部将变量传递给函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我尝试使用此循环读取一些URL以读取其修改时间: var arr = []; //... fill arr with push for (var e in arr) { nodename=arr[e].hostname; node_json="/nodes/"+nodename; html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data&l

我尝试使用此循环读取一些URL以读取其修改时间:

var arr = [];

//... fill arr with push

for (var e in arr) {
        nodename=arr[e].hostname;
        node_json="/nodes/"+nodename;
        html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data</a>';

        xhr = $.ajax({
            url: node_json,
            success: (function(nn) {
                $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
            })(nodename)
        });

AJAX调用的来源:

您直接执行该方法,并将其结果作为
成功
回调的回调传递

xhr
已作为第三个参数传递,请重试

success: function(nn,status, xhr) {
            $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
        }

如果还必须传递
节点名
,则需要使用返回函数的函数

success: (function(nn){
              return function(data ,status, xhr) {
                 // you can use nodename here...
                 $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
            };
        })(nodename)

您直接执行该方法并将其结果作为
success
回调的回调传递

xhr
已作为第三个参数传递,请重试

success: function(nn,status, xhr) {
            $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
        }

如果还必须传递
节点名
,则需要使用返回函数的函数

success: (function(nn){
              return function(data ,status, xhr) {
                 // you can use nodename here...
                 $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
            };
        })(nodename)

您直接执行该方法并将其结果作为
success
回调的回调传递

xhr
已作为第三个参数传递,请重试

success: function(nn,status, xhr) {
            $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
        }

如果还必须传递
节点名
,则需要使用返回函数的函数

success: (function(nn){
              return function(data ,status, xhr) {
                 // you can use nodename here...
                 $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
            };
        })(nodename)

您直接执行该方法并将其结果作为
success
回调的回调传递

xhr
已作为第三个参数传递,请重试

success: function(nn,status, xhr) {
            $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
        }

如果还必须传递
节点名
,则需要使用返回函数的函数

success: (function(nn){
              return function(data ,status, xhr) {
                 // you can use nodename here...
                 $('#host_'+nn).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
            };
        })(nodename)

如果
arr
确实是一个数组,只需使用
.forEach
或更好的
.map
(在旧浏览器上使用垫片)来封装每个迭代的范围,而不需要额外的闭包:

var xhrs = arr.map(function(e) {
    var nodename = e.hostname;
    var node_json = "/nodes/" + nodename;

    html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data</a>';

    return $.ajax({
        url: node_json
    }).done(function(data, status, xhr) {
        $('#host_'+nodename).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
    });
});

如果
arr
确实是一个数组,只需使用
.forEach
或更好的
.map
(在旧浏览器上使用垫片)来封装每个迭代的范围,而不需要额外的闭包:

var xhrs = arr.map(function(e) {
    var nodename = e.hostname;
    var node_json = "/nodes/" + nodename;

    html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data</a>';

    return $.ajax({
        url: node_json
    }).done(function(data, status, xhr) {
        $('#host_'+nodename).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
    });
});

如果
arr
确实是一个数组,只需使用
.forEach
或更好的
.map
(在旧浏览器上使用垫片)来封装每个迭代的范围,而不需要额外的闭包:

var xhrs = arr.map(function(e) {
    var nodename = e.hostname;
    var node_json = "/nodes/" + nodename;

    html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data</a>';

    return $.ajax({
        url: node_json
    }).done(function(data, status, xhr) {
        $('#host_'+nodename).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
    });
});

如果
arr
确实是一个数组,只需使用
.forEach
或更好的
.map
(在旧浏览器上使用垫片)来封装每个迭代的范围,而不需要额外的闭包:

var xhrs = arr.map(function(e) {
    var nodename = e.hostname;
    var node_json = "/nodes/" + nodename;

    html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data</a>';

    return $.ajax({
        url: node_json
    }).done(function(data, status, xhr) {
        $('#host_'+nodename).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
    });
});


您的闭包代码是b0rked-您没有将函数引用传递给
success
,而是
undefined
-这是
(函数(nn)…(节点名)
的(不存在)返回值
arr
实际上是一个数组,或者一个对象?你的闭包代码是b0rked-你没有传递一个函数引用到
success
,而是
未定义的
-这是
(函数(nn)…(nodename)
的(不存在)返回值,顺便说一句,
arr
真的是一个数组吗,或者一个对象?你的闭包代码是b0rked-你没有传递一个函数引用到
success
,而是
未定义的
-这是
(函数(nn)…(nodename)
的(不存在)返回值,顺便说一句,
arr
真的是一个数组吗,或者一个对象?您的闭包代码是b0rked-您没有将函数引用传递给
success
,而是
未定义的
-这是
(函数(nn)…(节点名)
的返回值
arr
真的是数组还是对象?部分正确,除了
nn
是他的循环变量,而不是AJAXresult@Alnitak,为该案例添加了一个版本。我以前已经尝试过,但不起作用。geíves出现了巨大的错误,因为结果数据在错误消息中,我认为整个响应都是这样的,因为现在使用
(函数…
)时,这些恶作剧已经不再是正确的语法了。但我无法进一步测试,因为上面的解决方案有效。。。。谢谢你的帮助;)部分正确,除了
nn
是他的循环变量,而不是AJAXresult@Alnitak,为该案例添加了一个版本。我以前已经尝试过,但不起作用。geíves出现了巨大的错误,因为结果数据在错误消息中,我认为整个响应都是这样的,因为现在使用
(函数…
)时,这些恶作剧已经不再是正确的语法了。但我无法进一步测试,因为上面的解决方案有效。。。。谢谢你的帮助;)部分正确,除了
nn
是他的循环变量,而不是AJAXresult@Alnitak,为该案例添加了一个版本。我以前已经尝试过,但不起作用。geíves出现了巨大的错误,因为结果数据在错误消息中,我认为整个响应都是这样的,因为现在使用
(函数…
)时,这些恶作剧已经不再是正确的语法了。但我无法进一步测试,因为上面的解决方案有效。。。。谢谢你的帮助;)部分正确,除了
nn
是他的循环变量,而不是AJAXresult@Alnitak,为该案例添加了一个版本。我以前已经尝试过,但不起作用。geíves出现了巨大的错误,因为结果数据在错误消息中,我认为整个响应都是这样的,因为现在使用
(函数…
)时,这些恶作剧已经不再是正确的语法了。但我无法进一步测试,因为上面的解决方案有效。。。。谢谢你的帮助;)