我正在使用 MVC 4,它可以正常返回一个JavaScriptResult
. 我已经用简单的javascript对其进行了测试。
但是,虽然我可以在 firebug 中看到 getScript 将 javascript 返回到浏览器,但下面的代码不起作用:
@{
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 barchart 的标准 javascript。在返回的脚本中也省略了脚本标签,因为getScript
添加了这些。
问题是,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 的响应中看到 testscript.js 的内容。只需将 testscript.js 的内容替换为简单的内容,例如alert('hello');
getScript 就可以正常工作,但像上面的 testscript.js 和 getScript 这样复杂的内容就会停止工作。