1

を返すために正常に動作するMVC 4を使用していJavaScriptResultます。簡単なJavaScriptでテストしました。

ただし、getScript がブラウザに JavaScript を返すことは firebug で確認できますが、以下のコードは機能しません。

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Categories Page</title>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script src="~/Scripts/jquery-2.0.0.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $.getScript('http://localhost:53353/z/categories');
    });   
</script>
</head>    
<body>
    <h2>test</h2>
    <div id="chart_div">
    </div>        
</body>
</html>

しかし、私が置き換えると:

$(document).ready(function () {
        $.getScript('http://localhost:53353/z/categories');
});

.. が呼び出されたときにブラウザに返される JavaScript を使用するgetScriptと、コードは機能します。

が呼び出されたときに返される JavaScriptgetScriptは、Google 棒グラフを呼び出す標準の JavaScript です。getScriptこれらを追加するため、返されるスクリプトでも script タグは省略されます。

問題は、getScript返されたスクリプトをコピーして貼り付けてgetScriptセクションに置き換えるだけで、返されたスクリプトに欠陥がないことを確実に知ることができるのに、なぜ返されたスクリプトで窒息しているのかということです。作る?

わかった。MVC のことは忘れましょう。HTML (およびhttps://developers.google.com/chart/interactive/docs/gallery/barchartの例に基づく JavaScript ) を使用するだけで、次のように機能します。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Categories Page</title>
    <script type='text/javascript' src='https://www.google.com/jsapi'></script>
    <script src="scripts/jquery-2.0.0.js"></script>
    <script type="text/javascript" src="scripts/testscript.js"></script>
</head>
<body>
    <h2>test</h2>
    <div id="chart_div">
    </div>    
</body>
</html>

testscript.js には以下のみが含まれます。

google.load('visualization', '1', { packages: ['corechart'] });
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
    ['Year', 'Sales', 'Expenses'],
    ['2004', 1000, 400],
    ['2005', 1170, 460]       
]);
var options = { title: 'Company Performance', vAxis: { title: 'Year', titleTextStyle: { color: 'red' } } };
var chart = new google.visualization.BarChart(document.getElementById('chart_div')); chart.draw(data, options); }

しかし、ここで行を書き直すと...

<script type="text/javascript" src="scripts/testscript.js"></script>

なので...

<script type="text/javascript">
    $(document).ready(function () {
        $.getScript('scripts/testscript.js');
    });
</script>

...Firebug の Response で testscript.js の内容を確認できるにもかかわらず、ブラウザーがハングするだけです。testscript.js の内容を次のような単純なものにalert('hello');置き換えるだけで、getScript は問題なく動作しますが、上記の testscript.js と getScript のような複雑なものは動作しなくなります。

4

2 に答える 2

1

ファイル内の関数の呼び出しを開始する前に、ファイルがまだロードされていない可能性があります。
成功関数の操作を試してもらえますか?

$.getScript('http://localhost:53353/z/categories', function(data, textStatus, jqxhr) {
   if(textStatus == 'success') {
      //do work here
   }
});
于 2013-04-22T01:06:08.620 に答える