【问题标题】:Not able fetch Value from Javascript Array and Uncaught SyntaxError: Unexpected identifier in jquery无法从 Javascript 数组中获取值和未捕获的 SyntaxError:jquery 中的意外标识符
【发布时间】:2015-08-13 06:26:26
【问题描述】:

首先我是 Javascript 的新手。我正在使用一个在运行时获取其值的数组,例如

var tablehash = [CS: "CS", tbl_master: "tbl_master"]

我必须获取数组中的值才能与我尝试过的值进行比较

var valtocompare = tablehash ["CS"];

但它给了我错误,所以我手动测试了上面的数组

var tablehash = {CS: "CS", tbl_master: "tbl_master"}

并获取正确的值

我的问题是为什么我不能从以[] 作为开始和结束符号的数组中获取值,但我可以从以{} 作为开始和结束符号的数组中获取值

编辑:var tablehash = [CS: "CS", tbl_master: "tbl_master"]. 是在运行时从我的 jquery 中的 tablehash[xx[0]]=xx[0]; 行获得的,它包含在 [] 中,只有我能做什么


请任何人指出我做错了什么。

Uncaught SyntaxError: Unexpected identifier in jquery 问题

我不能问一个新问题我在这个线程中添加了我的新问题,因为下面提到的脚本在同一个 Jquery 库中。

我正在从我的页面调用下面提到的jQuery 库函数,但在评估我发送的 JSON 字符串的那一行,我得到 Uncaught SyntaxError: Unexpected identifier

从页面调用的函数

function BindSearchedQueryData(JsonString) {

        $('.sqlbuild').loadSQB(JsonString);
    }

loadSQB

loadSQB: function (jsonstr) {
        var $tt = this[0];

        $('.sqlcolumn').remove();
        $('.sqlwhere').remove();
        $('.sqlgroup').remove();
        $('.sqlsort').remove();

        var j=eval('(' + jsonstr + ')');  //Getting Error in this line  

        var coldiv  =$(".addnewsqlcolumn");
        var sortdiv =$('.addnewsqlsort');
        var groupdiv=$('.addnewsqlgroup');
        var wherediv=$('.addnewsqlwhere');

        /*rebuild col data*/
        for(var i=0;i<j.columndata.length;i++){
            //j.columndata[i].columnslot, j.columndata[i].columnvalue
            coldiv[0].opts.onselect(j.columndata[i].columnslot,coldiv,{columnas:j.columndata[i].columnas}); 
        }
        /*rebuild sort data*/
        for(var i=0;i<j.sortdata.length;i++){
            //j.sortdata[i].columnslot, j.sortdata[i].columnas
            sortdiv[0].opts.onselect(j.sortdata[i].columnslot,sortdiv,{columnas:j.sortdata[i].columnas});           
        }
        /*rebuild group by data*/
        for(var i=0;i<j.groupdata.length;i++){
            //j.groupdata[i].columnslot, 
            groupdiv[0].opts.onselect(j.groupdata[i].columnslot,groupdiv,null);                         
        }
        /*rebuild where data*/
        for(var i=0;i<j.wheredata.length;i++){
            //j.wheredata[i].columnslot, j.wheredata[i].opslot,j.wheredata[i].chainslot,j.wheredata[i].columnvalue
            wherediv[0].opts.onselect(j.wheredata[i].columnslot,wherediv,{columnslot:j.wheredata[i].columnslot,opslot:j.wheredata[i].opslot,chainslot:j.wheredata[i].chainslot,columnvalue:j.wheredata[i].columnvalue});            

        }

    }

请任何人指出这里出了什么问题


【问题讨论】:

  • 这不是一个数组。如果你想要对象,使用{CS: "CS", tbl_master: "tbl_master"},如果你想要数组,使用["CS", "tbl_master"][CS: "CS", tbl_master: "tbl_master"] 只是无效的语法。请使用JSHint 验证您的代码。

标签: javascript c# jquery arrays


【解决方案1】:

Javascript没有关联数组,即你不能有

var tablehash = [CS: "CS", tbl_master: "tbl_master"]

但你可以拥有

var tablehash = {CS: "CS", tbl_master: "tbl_master"},这是一个有效的对象。

完成此操作后,您可以使用object.key 语法访问这些值。

因此,tablehash.CS 的值将是 CS

PS - 在您的 ide/编辑器中使用 linter。

【讨论】:

  • 我从我的 javascript 中的 tablehash[xx[0]]=xx[0]; 行获得了指定的值 var tablehash = [CS: "CS", tbl_master: "tbl_master"].,它与 [] 一起出现,只有我能做什么
【解决方案2】:

在 Javascript 中 []{} 是有区别的。 [] 中的值是数组中的值,{} 中的值使 {} 成为 javascript 对象。 您可以在 Javascript 中使用关联数组,例如 {a: 'apple', b: 'ball'} 。 您还可以将数组作为值 {a: [1,2], b: [3,4]}。 所以你需要将你的哈希形成为 var tablehash = {CS: "CS", tbl_master: "tbl_master"}。 为了访问它,您可以这样写 tablehash['CS'] or tablehash.CS

【讨论】:

    【解决方案3】:

    回答我的第二个问题Uncaught SyntaxError: Unexpected identifier

    我传递给函数 loadSQB 的值是 Javascript 对象,所以我使用 JSON.stringify()Javascript 对象转换为 JSON 字符串

    loadSQB: function (jsonstr) {
        jsonstr=JSON.stringify(jsonstr); //Solution for the Question
        var $tt = this[0];
    
        $('.sqlcolumn').remove();
        $('.sqlwhere').remove();
        $('.sqlgroup').remove();
        $('.sqlsort').remove();
    
        var j=eval('(' + jsonstr + ')');  //Got Error in this line  
    
        var coldiv  =$(".addnewsqlcolumn");
        var sortdiv =$('.addnewsqlsort');
        var groupdiv=$('.addnewsqlgroup');
        var wherediv=$('.addnewsqlwhere');
    
        /*rebuild col data*/
        for(var i=0;i<j.columndata.length;i++){
            //j.columndata[i].columnslot, j.columndata[i].columnvalue
            coldiv[0].opts.onselect(j.columndata[i].columnslot,coldiv,{columnas:j.columndata[i].columnas}); 
        }
        /*rebuild sort data*/
        for(var i=0;i<j.sortdata.length;i++){
            //j.sortdata[i].columnslot, j.sortdata[i].columnas
            sortdiv[0].opts.onselect(j.sortdata[i].columnslot,sortdiv,{columnas:j.sortdata[i].columnas});           
        }
        /*rebuild group by data*/
        for(var i=0;i<j.groupdata.length;i++){
            //j.groupdata[i].columnslot, 
            groupdiv[0].opts.onselect(j.groupdata[i].columnslot,groupdiv,null);                         
        }
        /*rebuild where data*/
        for(var i=0;i<j.wheredata.length;i++){
            //j.wheredata[i].columnslot, j.wheredata[i].opslot,j.wheredata[i].chainslot,j.wheredata[i].columnvalue
            wherediv[0].opts.onselect(j.wheredata[i].columnslot,wherediv,{columnslot:j.wheredata[i].columnslot,opslot:j.wheredata[i].opslot,chainslot:j.wheredata[i].chainslot,columnvalue:j.wheredata[i].columnvalue});            
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-28
      • 2018-02-07
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多