按钮不工作没有刷新页面

时间:2014-01-31 16:52:02

标签: c# javascript asp.net response

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

该网站的前端是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中,在“网络”标签下,状态显示为“已取消”,但我仍在获取输出。

怎么会发生这种情况?我怎样才能找到问题所在?

3 个答案:

答案 0 :(得分:0)

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

编辑: 尝试从javascript函数返回false。这将阻止默认浏览器行为执行(What's the effect of adding 'return false' to a click event listener?

答案 1 :(得分:0)

解决方法可能是取消绑定然后重新绑定元素上的click事件,这样每次点击都实际上是“第一个”,以避免任何dojo或其他任何东西可能无法控制。我不知道道场,但基于http://dojotoolkit.org/reference-guide/1.9/dojo/on.html#dojo-on,以下内容应该是正确的:

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");
});

答案 2 :(得分:0)

谢谢大家的帮助和建议。

我找到了问题的解决方案。我需要的只是前端代码的一行。

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

感谢您的帮助。