0

私は 2 つの要件を持つサイトを構築しています。サイトはバックエンド コードを使用できず、サイトはユーザーの国に応じて異なる翻訳を表示する必要があります。JSON を使用してすべてのデータを取得し、HTML5 と Javascript を使用して位置情報を把握することで、これらの問題を解決しました。ただし、非常に単純なハードルであると予想していたものに落ちているようです。

JQuery getScript() 関数を使用して JSON ファイルをページにロードし、html() を使用してデータをエコーアウトしていますが、ここでは機能していません。コードは次のとおりです。

    <script type="text/javascript">
        $(function() {
            var countryName = 'england'.toLowerCase();  
            $.getScript('elements/'+countryName+'/data/datafile.js', function(data) {
                $('.welcomeOne h1').html(data.dt_welcome[0].Translation);
            });
        });
    </script>

ご覧のとおり、ファイルへのパスは動的でなければなりません (そうでない場合は、標準のタグを使用して JSON ファイルをインクルードします)。エラーは発生していませんが、getScript() のコールバックに入力したものはすべて実行されていません。ファイル パスをテストしましたが、正しいことを保証できます。

ところで、ここに関連するJSONのスニペットがあります(役立つ場合)

var dt_welcome = [
{"ID":1,"Source":"WELCOME","Characters available":null,"Current Characters":null,"Translation":"WELCOME","Notes":null},
{"ID":2,"Source":"","Characters available":230,"Current characters":210,"Translation":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure","Notes":null},
{"ID":3,"Source":"<Image choices to follow>","Characters available":null,"Current characters":null,"Translation":"","Notes":null},
{"ID":4,"Source":"SEMINAR FINDER","Characters available":null,"Current characters":null,"Translation":"SEMINAR FINDER","Notes":null},
{"ID":5,"Source":"","Characters available":260,"Current characters":234,"Translation":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure test test test test test test","Notes":null},
{"ID":6,"Source":"ENTER NOW","Characters available":null,"Current characters":null,"Translation":"ENTER NOW","Notes":null},
{"ID":7,"Source":"<Please put an 'x' in column F if your country stocks any of the below brands>","Characters available":null,"Current characters":null,"Translation":"","Notes":null},
{"ID":8,"Source":"Brand name","Characters available":null,"Current characters":null,"Translation":"x","Notes":null},
{"ID":9,"Source":"Brand name","Characters available":null,"Current characters":null,"Translation":"","Notes":null},
{"ID":10,"Source":"Brand name","Characters available":null,"Current characters":null,"Translation":"x","Notes":null},
{"ID":11,"Source":"Brand name","Characters available":null,"Current characters":null,"Translation":"","Notes":null},
{"ID":12,"Source":"Brand name","Characters available":null,"Current characters":null,"Translation":"x","Notes":null}];

前もって感謝します。

4

3 に答える 3

0

コードを見て編集...

jsファイルがjson形式のようには見えません。以下を使用します。

$.getScript('/[path]/' + language + 'datafile.js', function() {

また、JavaScript には 187 行目から始まるいくつかのエラーがあります。完全な箇条書きには引用符がありません。

通常のようにスクリプト ファイルを含めてエラーを探すだけで、Firebug (または Chrome または IE) でこれをトラブルシューティングできます。

<script type="text/javascript" src="/[path]/england/datafile.js""></script>

この 2 つが解決されると、問題なく動作するように見えます。

于 2011-10-03T16:13:12.693 に答える
0

これを動かして

 console.log(data);
                console.log(status);
                $('.welcomeOne h1').html(data.dt_welcome[0].Translation);

datafile.js に対して、jQuery はサーバーから取得したものを javascript として自動的に実行します。

編集

 console.log(data);
                console.log(status);
                $('.welcomeOne h1').html(dt_welcome[0].Translation);
于 2011-10-03T16:10:40.030 に答える
0

JavaScript ファイル内のコードを実行しない場合は、getScript の代わりに getJSON を使用します。

http://api.jquery.com/jQuery.getJSON/

datafile.js から "var dt_welcome =" を削除し、リテラル配列のみを返します。

getJSON の呼び出しで、引数「データ」を渡しています。これを使って。

   $(function() {
        var countryName = 'england'.toLowerCase();  
        $.getJSON('elements/'+countryName+'/data/datafile.js', function(data) {
            $('.welcomeOne h1').html(data[0].Translation);
        });
    });
于 2011-10-03T16:19:01.823 に答える