2013-01-06 99 views
1

我有一個問題:)jquery ajax成功時,從1.3.2升級到1.8.3

我升級我的舊jQuery 1.3.2到最新版本1.8.3。

當然,從這樣的舊版本升級會引起問題,我自定義的jQuery代碼:)

我想通了,我應該使用代理綁定的,但我仍然有問題,我的Ajax代碼。

我不是一個有經驗的javascript調試器,但對我來說,好像ajax成功不會觸發setProgress中的我的Google Chrome斷點。

我的代碼:

getProgress: function() { 
    $.ajax({type: "GET", url: "/progress", dataType: "json", 
     beforeSend: $.proxy(function(xhr) { 
     xhr.setRequestHeader("X-Progress-ID", this.uuid); 
     }, this), 
     success: $.proxy(this.setProgress, this) 
    }); 
    }, 
    setProgress: function(data) { 
    if (data.state == "done") { 
     this.finished(); 
    } else if (data.state == "error") { 
     alert("ERROR"+data.status); 
     this.finished(); 
    } else if (data.state == "starting") { 
     this.statusText.text("Startar"); 
     this.setTime(); 
    } else { 
     bps = bytesPerSecond((new Date()).getTime()-this.lastTime, this.received, data.received); 
     this.lastTime = (new Date()).getTime() 
     try { remaining = (this.size-this.received)/bps; } catch(err) { remaining = 0; } 
     this.received = data.received; 
     this.size = data.size; 
     this.statusText.html(
     (this.received/this.size).toPercentage()+ 
     " Uppladdat ( "+ 
     data.received.toHumanSize()+ 
     " av "+ 
     data.size.toHumanSize()+ 
     " )   "+ 
     bps.toHumanSize()+ 
     "/s   "+ 
     timeLeft(remaining)+ 
     " kvar" 
    ); 
     this.statusText.width((this.progressBar.width()-40)*(this.received/this.size)+20); 
     this.setTime(); 
    } 
    }, 

我猜出現了jQuery的1.4+,打破我的代碼一些變化將Ajax。任何想法可能是錯誤的?

回答

0

好吧,我發現這個解決方案:)

這不是真的,導致該問題的代碼。這是我的Nginx conf沒有輸出jquery現在在版本1.4+中驗證的純json(這就是爲什麼它在jquery 1.3.2中工作,而不是在新版本中)。

所以我將此添加到我的Nginx的conf:

location ^~ /progress { 
    upload_progress_json_output; 
    report_uploads proxied; 
}