dojo.io.iframe.send在dojo 1.8中第二次不发送请求

时间:2012-12-13 07:19:38

标签: dojo

示例代码段

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. 再次点击提交按钮...请求永不发送...
  3. 感谢任何帮助

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

dojo.io.frame.send一次只发送一个请求,因此如果它认为第一个请求仍在处理(无论它是否实际存在),它将无法在第二个调用上运行。诀窍是在返回的延迟结果上调用cancel()(如果存在),如下所示:

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

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

答案 2 :(得分:0)

对于dojo 1.8,不推荐使用dojo.io.iframe。而是使用dojo.request.iframe

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

iframe._currentDfd = null;

iframe.get(url, {
    data: sendData,
});