Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按钮在不刷新页面的情况下不工作_C#_Javascript_Asp.net_Response - Fatal编程技术网

C# 按钮在不刷新页面的情况下不工作

C# 按钮在不刷新页面的情况下不工作,c#,javascript,asp.net,response,C#,Javascript,Asp.net,Response,我正在建立一个具有一些简单功能的网站,我遇到了一些问题。我不能提供任何示例代码,因为我不知道问题出在哪里,而且从技术上讲,该网站没有崩溃 该站点的前端是html和javascript,后端是我使用的ASP.Net和C# 页面上有一个按钮,它将触发javascript中的函数。然后,该函数将调用后端aspx文件(比如myFunction.aspx),并生成一个输出文件供用户下载 一切正常。我得到了预期的结果,并且能够毫无问题地下载输出文件 我没有注意到这个问题,直到我尝试重新运行这个函数 我再次按

我正在建立一个具有一些简单功能的网站,我遇到了一些问题。我不能提供任何示例代码,因为我不知道问题出在哪里,而且从技术上讲,该网站没有崩溃

该站点的前端是html和javascript,后端是我使用的ASP.Net和C#

页面上有一个按钮,它将触发javascript中的函数。然后,该函数将调用后端aspx文件(比如myFunction.aspx),并生成一个输出文件供用户下载

一切正常。我得到了预期的结果,并且能够毫无问题地下载输出文件

我没有注意到这个问题,直到我尝试重新运行这个函数

我再次按下按钮,但它没有做任何事情(我也在使用Httpfox,所以我知道它没有调用任何东西)

我意识到如果不刷新页面,我就无法再次运行该函数。刷新页面后,它工作正常

有人能解释为什么是这样吗?如何调试此问题?我甚至不知道问题是出在前端还是后端

谢谢你的帮助

编辑

这就是我创建按钮的方式

<button dojoType="dijit.form.Button" type="button" onclick ="myJSFunction('uploadForm')">Generate</button>
编辑2

我只是注意到一些有趣的事情

我一直在使用HttpFox在Firefox上运行,没有收到任何错误消息。然后我试着用F12在Chrome上运行它,我收到了红色警报

在Chrome中,网络标签下的状态显示为“已取消”,但我仍然得到了输出


这怎么会发生?如何找到问题所在?

检查javascript控制台,查看页面上是否没有任何错误。否则,发布按钮和javascript函数的asp.net标记

编辑:
尝试从javascript函数返回false。这将阻止默认浏览器行为执行()

一种解决方法可能是取消绑定,然后重新绑定元素上的单击事件,这样每次单击实际上都是“第一次”,以避免dojo或其他操作超出您的控制。我不知道dojo,但基于以下几点应该是正确的:

var updateHandle;
var myJSFunction= function (formId) {
    updateHandle.remove();
    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;
            updateHandle = on(your.buttonElement, "click", function(){
            myJSFunction(formId);
            });
        }
        error: function (response, ioArgs) {
            alert("Failure:" + response);
        }
    });
}
updateHandle = on(your.buttonElement, "click", function(){
            myJSFunction("myFormId");
});

谢谢大家的帮助和建议

我已经找到了这个问题的解决办法。我只需要一行到前端代码

dojo.io.iframe._currentDfd = null; //add this line
dojo.io.iframe.send
({...
});

谢谢您的帮助。

您可以将代码粘贴到添加按钮单击处理程序的位置吗。要调试该问题,只需在任何浏览器(通常是F12)上打开devtools即可。如果您有一个一次性事件,通常是因为您用
一次性声明了一个处理程序,或者它在使用后被分离。@bitoiu I使用firebug,没有错误,事实上,根本没有运行任何东西。myJSFunction('uploadForm')是否调用dojo.io.iframe.send?真的不熟悉dojo,myJSFunction在哪里?@bitoiu是的,请查看我的更新代码。MyJSFunction在html文件内的标记中。因此,这里没有错误,但我不知道dojo类型的按钮是否有错误,因此您可以使用另一个简单的html按钮,附加一个简单的测试函数和console.log(“test”),检查它是否触发两次。我按照您的建议添加了返回false,但它没有进行任何更改。如果不刷新页面,我仍然无法再次运行该函数。
dojo.io.iframe._currentDfd = null; //add this line
dojo.io.iframe.send
({...
});