4

示例代码片段

this._deferred = dojo.io.iframe.send({
        url: "/Some/Servie",
        method: "post",
        handleAs: 'html',
        content: {},
        load: function(response, ioArgs){
            //DO successfull callback
        },
        error: function(response, ioArgs){  
            // DO Failer callback
        }
    });

脚步

  1. 点击提交按钮发送请求并成功得到响应
  2. 再次单击提交按钮...请求从不发送...

感谢任何帮助

4

3 回答 3

2

我不能谈论 1.8,但我使用的是 dojo 1.6,并且遇到了一个非常相似的问题,我通过以下方法解决了这个问题:

dojo.io.iframe._currentDfd = null; //insert this line
dojo.io.iframe.send
({...

*在 Chrome 版本 25.0.1364.152 m 中验证

来源: http: //mail.dojotoolkit.org/pipermail/dojo-interest/2012-May/066109.html

于 2013-03-14T00:46:43.060 回答
2

dojo.io.frame.send一次只会发送一个请求,所以如果它认为第一个请求仍在处理中(无论它实际上是否是),它就不会在第二个调用上工作。诀窍是调用cancel()返回的延迟结果(如果存在),如下所示:

if (this._deferred) {
    this._deferred.cancel();
}
this._deferred = dojo.io.iframe.send({
....

这将取消第一个请求并允许第二个请求正确发送。

于 2013-06-06T20:28:46.547 回答
0

对于 dojo 1.8,dojo.io.iframe已弃用。dojo.request.iframe改为使用。

@Sorry-Im-a-N00b 的解决方案仍然有效:

iframe._currentDfd = null;

iframe.get(url, {
    data: sendData,
});
于 2015-03-20T03:28:29.980 回答