0

上記のエラーが発生する jQuery 経由で AJAX 呼び出しを行っています。奇妙な部分は、コードがLAMP、WAMPで正常に動作することですが、実際のサーバーに移植すると問題が発生します。

これが私の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 の割り当て関数に基づいて構築された関数です。)

4

2 に答える 2

0

変更してみる

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

$words = json_encode($words);

var words =json には入れたくありません。合法ではありません。http ://json.orgを参照してください。

于 2012-07-14T03:01:00.600 に答える