2010-06-01 82 views
1

更新:我试过一个版本的脚本没有“beforeContentUpdate”的一部分,该脚本将返回以下JSONJavaScript语法错误

{"COLUMNS":["TNAME","TBRIEF","GAMEID","TITLEID","RDATE","GNAME","PABBR","PNAME","RSCORE","RNAME"], 
"DATA":[["Dark Void","Ancient gods known as 'The Watchers,' once banished from our world by superhuman Adepts, have returned with a vengeance.",254,54,"January, 19 2010 00:00:00","Action & Adventure","X360","Xbox 360",3.3,"14 Anos"]]} 

使用包含“beforeContentUpdate,”但是,不返回任何脚本。我使用Firebug查看工具提示生成的div的内容,它是空白的!

你好,我想知道,如果有人可以帮助我一个语法错误在此代码的第14行: 调试器说:missing) in parentheticalvar json = eval('(' + content + ')');

// Tooltips for index.cfm 
$(document).ready(function() 
{ 
    $('#catalog a[href]').each(function() 
    { 
     $(this).qtip({ 
      content: { 
      url: 'components/viewgames.cfc?method=fGameDetails', 
      data: { gameID: $(this).attr('href').match(/gameID=([0-9]+)$/)[1] }, 
      method: 'get' 
     }, 
     api: { 
      beforeContentUpdate: function(content) { 
      var json = eval('(' + content + ')'); 
      content = $('<div />').append(
      $('<h1 />', { 
       html: json.TNAME 
       })); 
       return content; 
      } 
     }, 
     }); 
    }); 
}); 

回答

0

原来是另一种情况,其中ColdFusion调试器,当请求调试输出打开时,导致ajax错误。这是我们在启用调试时使用ColdFusion时需要记住的一个大问题。它打破了阿贾克斯。

2

你忘了一个

+ 

应该是:

var json = eval('(' + content + ')'); 
+0

我添加了“+”,但现在我在同一行中发现另一个错误,在括号中显示“missing” - 任何想法? – Mohamad 2010-06-01 23:46:55

+1

深入阅读:[ExtJS - SyntaxError:missing)in parenthetical](http://stackoverflow.com/questions/1645068/extjs-syntaxerror-missing-in-parenthetical)... – miku 2010-06-01 23:51:19

+1

报价:缺少的括号通常表示某事在JSON中是错误的。它可能是字符串之前/之后的一个额外字符。使用Firebug检查你回来的东西,并确保它没有任何额外的字符。 – miku 2010-06-01 23:51:39

1

最适合这个被www.jslint.com

我会复制和粘贴代码,并告诉我这一点:

Problem at line 21 character 10: Extra comma.

},

+0

取出逗号使得不会不同! IT表示“第14行的问题:eval是邪恶的”这是什么样的错误? – Mohamad 2010-06-02 13:40:28

1

确保您JSON已经没有多余的字符,则JSON必须是有效的。检查content如何返回一个普通的警报,因此没有任何东西会改变字符串。

此外,请考虑使用parseJSON from jQuery而不是eval。 Quote:

var obj = jQuery.parseJSON('{"name":"John"}'); 
alert(obj.name === "John");