【发布时间】:2023-03-20 03:10:01
【问题描述】:
我正在构建一个具有一些简单功能的网站,但遇到了一些问题。我无法提供任何示例代码,因为我不知道问题出在哪里,而且从技术上讲,该网站并没有崩溃。
网站的前端是 html 和 javascript,后端我使用的是 ASP.Net 和 C#。
页面上有一个按钮,它将触发javascript中的功能。然后该函数将调用后端 aspx 文件(例如 myFunction.aspx)并生成一个输出文件供用户下载。
一切正常。我得到了预期的结果,并且能够毫无问题地下载输出文件。
直到我尝试重新运行此函数时才注意到此问题。
我再次按下按钮,但它没有做任何事情(我也在使用 Httpfox,所以我知道它没有调用任何东西)
我意识到如果不刷新页面,我就无法再次运行该功能。刷新页面后就可以正常使用了。
谁能解释一下为什么会这样?我该如何调试这个问题?我什至不知道是字体问题还是后端问题。
感谢您的帮助。
编辑
这就是我创建按钮的方式。
<button dojoType="dijit.form.Button" type="button" onclick ="myJSFunction('uploadForm')">Generate</button>
这就是函数调用asp后端的方式
var myJSFunction= function (formId) {
dojo.io.iframe.send
({
url: 'myURL/myFunction.aspx?parameter=p',
form: dojo.byId(formId),
method: "POST",
handleAs: "text",
load: function (response, ioArgs) {
dojo.byId("timeStamp").value = response;
}
error: function (response, ioArgs) {
alert("Failure:" + response);
}
});
}
编辑 2
我只是注意到一些有趣的事情。
我一直在使用 HttpFox 在 Firefox 中运行,但没有收到任何错误消息。然后我尝试使用 F12 在 Chrome 中运行它,但我收到了红色警报。
在 Chrome 中,在“网络”选项卡下,状态显示为“已取消”,但我仍然得到输出。
怎么会这样?如何找到问题所在?
【问题讨论】:
-
您能否将代码粘贴到您添加按钮单击处理程序的位置。要调试问题,只需在任何浏览器(通常是 F12)上打开 devtools。如果您只有一次事件,通常是因为您使用
once声明了一个处理程序,或者它在使用后被分离。 -
@bitoiu 我用的是firebug,没有任何错误,事实上,什么都没有运行。
-
是 myJSFunction('uploadForm') 调用 dojo.io.iframe.send 吗?真的不熟悉dojo,myJSFunction在哪里?
-
@bitoiu 是的,请查看我更新的代码。 myJSFuntion 位于 html 文件内的
-
所以,没有错,但是我不知道dojo类型的按钮可以,所以你能不能再有一个简单的HTML按钮,附上一个简单的测试函数和console.log("Test") ,检查是否触发了两次。
标签: c# javascript asp.net response