Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 韩元价值';t推送至阵列_Javascript_Jquery - Fatal编程技术网

Javascript 韩元价值';t推送至阵列

Javascript 韩元价值';t推送至阵列,javascript,jquery,Javascript,Jquery,在下面的代码中,我用var tag=data[j]['text']为JSON中的变量赋值并用这个console.log(标记)输出它(用于测试)有效 我尝试将值推入带有标记的数组中但它不会工作 为什么这些值不进入数组?我只是想把tag的内容放到一个数组中 function GetAvailableTags() { var url = '/TextCodes/TextCodes?key='; var tagGroups = [];

在下面的代码中,我用
var tag=data[j]['text']为JSON中的变量赋值并用这个
console.log(标记)输出它(用于测试)有效

我尝试将值推入带有
标记的数组中但它不会工作

为什么这些值不进入数组?我只是想把
tag
的内容放到一个数组中

function GetAvailableTags() {
            var url = '/TextCodes/TextCodes?key=';
            var tagGroups = [];
            $('.ui-autocomplete-input').each(function () {
                var key = $(this).attr('id');
                var tags = [];
                //console.log(key);
                $.getJSON(url + key, function (data) {
                    for (var j = 0, len = data.length; j < len; j++) {
                        var tag = data[j]['text'];
                        console.log(tag);
                        tags.push(tag);
                    }
                });
                console.log(tags.length);
                for (var k = 0, len = tags.length; k < len; k++) {
                    console.log(tags[k]);
                }
            });
        }
函数GetAvailableTags(){ var url='/TextCodes/TextCodes?key='; var tagGroups=[]; $('.ui自动完成输入')。每个(函数(){ var key=$(this.attr('id'); var标签=[]; //控制台日志(键); $.getJSON(url+键,函数(数据){ 对于(var j=0,len=data.length;j

谢谢您的帮助。

因为
$。getJSON
是一个异步函数。这意味着你的代码

console.log(tags.length);
for (var k = 0, len = tags.length; k < len; k++) {
    console.log(tags[k]);
}
这就是为什么在上面的代码中查看时,变量似乎是空的,但是如何可能使用
console.log(tag)打印数据在回调函数中

更新

下面是一个使用$.ajax方法而不是$.getJSON来指定必须使用参数
asynch:false

通过这种方式,服务器调用响应(成功回调)是继续该过程所必需的。这种非标准方式的缺点是,在等待服务器响应时,您的网页可能会被冻结。这不是最好的优雅方式,但有时它是有用的

function GetAvailableTags() {
    var url = '/TextCodes/TextCodes?key=';
    var tagGroups = [];
    $('.ui-autocomplete-input').each(function () {
        var key = $(this).attr('id');
        var tags = [];
        //console.log(key);
        $.ajax({
            url: url + key,
            type: 'POST',
            asynch: false,//specify to stop JS execution waiting the server response
            success: function (data) {
                for (var j = 0, len = data.length; j < len; j++) {
                    var tag = data[j]['text'];
                    console.log(tag);
                    tags.push(tag);
                }
            },
            error : function(jqXHR, textStatus, errorThrown) {
                alert('an error occurred!');
            }
        });
        console.log(tags.length);
        for (var k = 0, len = tags.length; k < len; k++) {
            console.log(tags[k]);
        }
    });
}
函数GetAvailableTags(){ var url='/TextCodes/TextCodes?key='; var tagGroups=[]; $('.ui自动完成输入')。每个(函数(){ var key=$(this.attr('id'); var标签=[]; //控制台日志(键); $.ajax({ url:url+键, 键入:“POST”, asynch:false,//指定停止JS执行以等待服务器响应 成功:功能(数据){ 对于(var j=0,len=data.length;j
我的解决方案有点冗长和愚蠢,但它是有效的。现在,我可以访问数组
textCodes['taxes']
之类的变量。sdespont的
async
note也有帮助

    var textCodes = GenerateTextCodes();
    console.log(textCodes);

    function GenerateTextCodes() {
        var arr = [];
        $('.ui-autocomplete-input').each(function () {
            var id = $(this).attr('id');
            arr[id] = GetAvailableTags(id);
        });
        //console.log(arr['taxes']);
        return arr;
    }

    // get all autocomplete element IDs and put them into an array
    function GetAvailableTags(key) {
        var url = '/TextCodes/TextCodes?key=';
        var tags = [];
        $.ajax({
            url: url + key,
            type: 'GET',
            async: false,
            success: function (data) {
                //console.log(data[0].text);
                //console.log(data.length);
                for (var i = 0; i < data.length; i++) {
                    //console.log(data[i].text);
                    tags.push(data[i].text);
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('an error occurred!');
            }
        });
        //console.log(tags);
        return tags;
    }
var textCodes=GenerateTextCodes();
console.log(文本代码);
函数GenerateTextCodes(){
var-arr=[];
$('.ui自动完成输入')。每个(函数(){
var id=$(this.attr('id');
arr[id]=GetAvailableTags(id);
});
//console.log(arr['taxes']);
返回arr;
}
//获取所有自动完成元素ID并将它们放入数组中
函数GetAvailableTags(键){
var url='/TextCodes/TextCodes?key=';
var标签=[];
$.ajax({
url:url+键,
键入:“GET”,
async:false,
成功:功能(数据){
//console.log(数据[0].text);
//console.log(data.length);
对于(变量i=0;i
您必须推迟使用JSON调用的响应,直到调用实际完成;JavaScript程序不会等待响应。使用延迟或成功处理程序,并将代码放在其中。看啊,不是范围对不起,错过了一个括号…您正在ajax响应填充它之前记录数组。看,我不是简单地做了这里正在成功完成的事情吗?为什么它对我不起作用?那么,我如何才能将json数据放入数组?您正在将值推入数组。你只是想在它到达之前把它展示出来。您可以考虑使用$.ajax和设置AsYNC=false,而不是GETJSON速记:请查看您的数据在数组中,但仅在执行回调时。将您的逻辑添加到回调中,以使用数组数据,如表单元素值更新或任何您想要执行的操作。您还可以调用一个函数在回调结束时执行。
$.getJSON
方法的回调函数在哪里?从根本上说,他们似乎在做我正在做的事情。它们使用
$循环。每个
并推送到数组…回调函数定义为$.getJSON方法的第二个参数。当服务器回复数据时调用此函数。您已经在使用回调,它是您创建数组的地方
    var textCodes = GenerateTextCodes();
    console.log(textCodes);

    function GenerateTextCodes() {
        var arr = [];
        $('.ui-autocomplete-input').each(function () {
            var id = $(this).attr('id');
            arr[id] = GetAvailableTags(id);
        });
        //console.log(arr['taxes']);
        return arr;
    }

    // get all autocomplete element IDs and put them into an array
    function GetAvailableTags(key) {
        var url = '/TextCodes/TextCodes?key=';
        var tags = [];
        $.ajax({
            url: url + key,
            type: 'GET',
            async: false,
            success: function (data) {
                //console.log(data[0].text);
                //console.log(data.length);
                for (var i = 0; i < data.length; i++) {
                    //console.log(data[i].text);
                    tags.push(data[i].text);
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('an error occurred!');
            }
        });
        //console.log(tags);
        return tags;
    }