【发布时间】:2019-05-29 14:19:51
【问题描述】:
我正在尝试将我的脚本从 CSHTML 移动到外部 Javascript 文件。除了一个函数之外,所有脚本都能完美运行:$.post('@Url.Action("GetPoint", "Main")').done(function (xml)
我在浏览器调试器上得到的错误是:
jquery.min.js:2 POST http://localhost:58153/@Url.Action(%22GetPoint%22,%20%22Main%22) 404(未找到)
我怎样才能使这个功能起作用??
var script = document.createElement('script');
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js";
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
var createPoint = function(ctx, lat, lon) {
ctx.beginPath();
ctx.arc(lat, lon, 8, 0, Math.PI * 2);
ctx.fillStyle = "red";
ctx.strokeStyle = "black";
ctx.lineWidth = 3;
ctx.fill();
ctx.stroke();
ctx.closePath();
}
var isFirstMission = document.getElementById("first").value;
var ctx = document.getElementById("myCanvas").getContext('2d');
ctx.canvas.width = window.innerWidth;
ctx.canvas.height = window.innerHeight;
if (isFirstMission) {
// ...
} else {
myTimer = (function(ctx) {
$.post('@Url.Action("GetPoint", "Main")').done(function(xml) { // This function does not work..
alert(xml);
var xmlDoc = $.parseXML(xml);
$xml = $(xmlDoc);
var lat = (parseFloat($xml.find("lat").text()) + 90)(screen.height / 180);
var lon = (parseFloat($xml.find("lon").text()) + 180) * (screen.height / 360);
alert(lat);
alert(lon);
createPoint(ctx, lat, lon);
});
});
setInterval(function() {
myTimer(ctx);
}, 1000);
}
【问题讨论】:
-
它在外部 JS 文件中不起作用,因为您使用的是 Razor 语法:
$.post('@Url.Action("GetPoint", "Main")')。这仅在 CSHTML 文件中解释 -
另外,顺便说一句,您真的应该为
isFirstMission使用布尔值,而不是字符串。 -
@RoryMcCrossan 我不得不说,这很吸引人
if ("true" === isFirstMission) {
标签: javascript jquery .net web post