2012-07-13 126 views
0

我正在通过jQuery进行AJAX调用,导致上述错误。奇怪的部分是代码在LAMP,WAMP上工作正常,但是当它移植到真正的服务器时,它提供了问题。未捕获的SyntaxError:意外的令牌非法?

这里是我的AJAX调用:

function wordAnalysis() { 
    $("#spinner").show(); 
    removeTopics(); 
    $.ajax({ 
      type: "POST", 
      url: "{$site_root_path}pages/wordanalysis.php", 
      data: "statuses="+json_statuses, 
      success: function(msg){ 
       $("#mainstage").html(msg); 
       $("#spinner").hide(); 
      } 
    }); 
} 

下面是从AJAX加载的Smarty的.tpl文件调用

<script type="text/javascript">{$words}</script> 
<script type="text/javascript" src="{$site_root_path}extlib/jQCloud/jqcloud-1.0.0.min.js"></script> 
<link rel="stylesheet" type="text/css" href="{$site_root_path}extlib/jQCloud/jqcloud.css" /> 
<script type="text/javascript"> 
$(document).ready(function() { 
    var max = {$max}; 
    var avg = {$avg}; 
    var time_taken = {$time_taken}; 
    var count = {$count}; 
    var size; 
{literal} 
    var text; 
    var color; 
    var span; 
    var ele; 
    var word_list = []; 
    var table_height = $("#contentTable").height(); 
    var orig_table_height = 563; 
    var ratio = table_height/orig_table_height; 
    var max_font_size = 45; 
    for (var word in words) { 
     if (words[word]['total'] < avg) { 
      continue; 
     } 
     color = Math.floor((words[word]['url']*100)/words[word]['total']); 
     size = Math.floor((words[word]['total']/max)*max_font_size); 
     size = Math.round(size*ratio); 
     var item = new Array(); 
     item['text'] = word; 
     item['weight'] = words[word]['total']; 
     var html = new Array(); 
     if (color <= 10) { html['style']= "color: #68a1ff;"; } 
     else if (color <= 20) { html['style']= "color: #4088ff;"; } 
     else if (color <= 30) { html['style']= "color: #2477ff;"; } 
     else if (color <= 40) { html['style']= "color: #0060ff;"; } 
     else if (color <= 50) { html['style']= "color: #0057e6;"; } 
     else if (color <= 60) { html['style']= "color: #004ece;"; } 
     else if (color <= 70) { html['style']= "color: #0044b5;"; } 
     else if (color <= 80) { html['style']= "color: #003996;"; } 
     else if (color <= 90) { html['style']= "color: #002c75;"; } 
     else { html['style']= "color: #002562;"; } 
     html['style'] += " font-size: "+size; 
     item['html'] = html; 
     word_list.push(item); 
    } 
    $("#mainstage").jQCloud(word_list); 
}); 
</script> 
<style type="text/css"> 
    #mainstage span.w10, #mainstage span.w9, #mainstage span.w8, #mainstage span.w7 { 
     text-shadow: 0px 1px 1px #ccc; 
    } 
    #mainstage span.w3, #mainstage span.w2, #mainstage span.w1 { 
     text-shadow: 0px 1px 1px #fff; 
    } 
</style> 
{/literal} 
<link rel="stylesheet" type="text/css" href="{$site_root_path}assets/css/popup.css" /> 
<script type="text/javascript" src="{$site_root_path}assets/js/popup.js"></script> 

可能是什么太只有在这种错误的原因真正的服务器,而不是LAMP,WAMP?我基本上用铬进行了测试。

编辑:

的数据被调用后返回的JSON。

$words = StatusProcessing::findWords($statuses, $max, $avg); 
$words = 'var words = '.json_encode($words); 
$this->addToView('words', $words); 

(这addToView是建立在Smarty的分配功能的功能。)

+0

*“数据在调用后以JSON形式返回。”*我没有看到任何JSON。你说过ajax调用正在加载Smarty模板。该模板肯定不会返回JSON。 – 2012-07-13 12:22:35

+0

@TJCrowder iive现在把JSON放在问题 – eku 2012-07-13 12:43:40

+0

@TJCrowder它是一个非常大的项目,我不认为问题会出现在PHP部分,所以我没有把它放在问题中第一名。无论如何,它现在和整个代码在这里:https://github.com/ekanshpreet/data-portraits – eku 2012-07-13 12:51:06

回答

0

尝试改变

$words = 'var words = '.json_encode($words);

$words = json_encode($words);

你不想要var words =在您的json中,这是不合法的,请参阅http://json.org

0

Chrome未指定此错误。在Firefox中调试(使用Firebug)将为您提供更多信息。

相关问题