[英]JavaScript not firing in C# MVC4
我认为以下代码如下:
<script type="text/javascript">
function OnCancelClick(e)
{
var jobId = e;
var flag = confirm('You are about to cancel job : ' + jobId + '. Are you sure you want to cancel this job?');
if (flag) {
$.ajax({
url: '/job/CancelJob',
type: 'POST',
data: { jobId: jobId },
dataType: 'html',
success: function (result) { alert('Job ' + jobId + ' was cancelled.'); document.location = "@Url.Action("Index", "Job")"; },
error: function () { alert('Something went wrong. Check the log for more information.'); }
});
}
return false;
}
</script>
我认为我也有:
<input type="submit" id="cancelButton" value="Cancel" onclick="javascript: return OnCancelClick(@Model.Id);" />
在我的控制器中,我有:
[HttpPost]
public ActionResult CancelJob(int jobId)
{
try
{
logger.LogInfo(string.Format("<start> Cancel-button clicked for job : {0}", jobId), jobId);
JobCommandService.ChangeStatus(jobId, 6);
logger.LogInfo(string.Format("<end> Cancel-button clicked for job : {0}", jobId), jobId);
return RedirectToAction("Index", "Job");
}
catch (Exception ex)
{
logger.LogError(ex.Message, ex, jobId);
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return Json(new { Success = false, Message = ex.Message });
}
}
当我在VS2012中运行它时,它可以正常工作。 当我将其部署到服务器时,我得到的消息是出了点问题。 在我的日志记录中,没有单击按钮的痕迹。
根据您的评论,部署后,您的应用程序将安装在accindigoapps.blabla.lok/jobmonitor
。
但是,您的脚本的url硬编码为url: '/job/CancelJob'
。 那将意味着:
http://localhost:XXX/job/CancelJob
http://accindigoapps.blabla.lok/job/CancelJob
,缺少工作监视器部分。 您需要一种方法来通知JS代码有关应用程序的基本URL:
您可以使用Url.Action("CancelJob","job")
在Razor视图中生成Url,并将该Url传递到您的JavaScript代码中。
另一种选择是在基本布局的某些javascript中使用Url.Content("~/")
。 该助手Url.Content("~/")
将只返回你的应用程序文件夹, /
在你的开发环境和/jobmonitor/
部署时。 这样,您将可以将应用程序的相对于根目录的URL用于任何脚本,因此您可以像在脚本中一样使用它来构建相对于根目录的URL:
<script> var myApp = {}; myApp.BaseUrl = '@Url.Content("~/")'; </script> //Some other script like yours would be able to keep using root-relative urls as: $.ajax({ url: myApp.BaseUrl + 'job/CancelJob', ...
如果您希望生成完整的URL,则可以采用类似的方法。 看看这个问题
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.