【发布时间】:2017-02-13 15:31:40
【问题描述】:
我正在使用 Modal Bootstrap 类让用户填写一些表格,然后在最后有一个“完成”按钮来提交表格的答案:
<button type="submit" id="submitCallScriptBtn" onclick="submitInitialCallScript(this);"
data-ptKey="@Model.Patient.PtKey" data-assignedTaskKey="@Model.Tasks[0].TassKey"
class="btn btn-primary">Complete Initial Call</button>
因此,当用户单击提交按钮时,我想从名为“PatientSearch.js”的单独 JavaScript 文件中调用 JavaScript 函数:
function submitInitialCallScript(elem) {
console.log("This Method is running");
var e = document.getElementById("communication");
var eResponse = e.options[e.selectedIndex].text;
var ptKey = $(elem).data('ptKey');
var assignedTasakKey = $(elem).data('assignedTaskKey');
$.ajax({
type: 'GET',
dataType: 'text',
url: '~/PatientController/SubmitInitialCallScript',
data: {
ptKey: ptKey,
tass_Key: assignedTaskKey,
question1: $("input[name=goodtime]:checked").val(),
question2: $("input[name=startedDevice]:checked").val(),
question3: $("input[name=driver]:checked").val(),
question3a: $("input[name=comfort]:checked").val(),
question4: $("#concerns").val(),
question5: $("input[name=occupation]:checked").val(),
question6: $("input[name=appointmentscheduled]:checked").val(),
question6a: $("#doctor").val(),
question6b: $("#appointDate").val(),
question7: $("input[name=selfTracking]:checked").val(),
question8: $("input[name=understand]:checked").val(),
question9: eResponse,
question10: $("#otherQuestions").val()
}, success(data) {
if (data == "true")
window.location.assign("~/Controllers/Patient/Index");
else
alert("Error Submitting");
}, failure(data) {
alert("Error Submitting")
}
})
但是,我无法让我的 JavaScript 方法运行。当我点击我的按钮时,什么也没有发生..即使文件链接正确:
我做错了什么吗?是否有不同的方式来调用 JavaScript 方法而我做错了?
编辑:
以下是 Web ToolKit 错误的一些屏幕截图:
您在这里看到 PatientSearch.js 甚至不在文件结构中,即使它与您在 Visual Studio 中看到的相同。
【问题讨论】:
-
它是否显示在开发者工具源选项卡中?
-
@JAG 如果你的意思是,脚本标签是否显示在开发工具中,是的。
-
不仅仅是脚本标签,检查实际文件是否从Sources选项卡或Network选项卡加载
-
貌似
Sitewide.js加载正常,所以用同样的方法加载PatientSearch.js。相对路径src="~/..可能有问题 -
没有什么明显的错误,但有一些不好的做法。 1)。
@model声明应该是第一行。 2) 你应该避免硬编码的应用程序相关 URL,即~/。相反,请使用Url.Content("~/JavaScript/PatientSearch.js")之类的东西,这将确保 URL 得到真正的评估。浏览器实际上不支持应用相对 URL。 Razor应该捕获硬编码的应用程序相关 URL 并为您更改它,但这不能保证。
标签: javascript jquery asp.net asp.net-mvc razor