2010-08-22 34 views
1

經過長時間搜索最佳上傳技術,我決定使用jQuery Uploadify。jQuery Uploadify高級文件驗證問題

我沒有問題實現它到現有的代碼,排除一件事。我創建了嚴格的上傳驗證規則。

主要問題是onAllComplete()函數返回成功消息。在我的驗證文件中,我也嘗試過use echo 'errror'die('error')。沒有任何運氣。我搜索了Google和SO。沒有任何運氣。

你有任何想法/建議/片段?任何幫助讚賞。

更新
爲了使我的情況清楚。我使用onComplete()函數來顯示最終結果,但我沒有 想法如何強制onAllComplete()函數顯示正確的數據。

更新2 我申請IgalSt(我敢肯定,我之前做過類似的東西),但仍然有同樣的問題。我的onComplete功能看起來現在如下:

onComplete: function (ev, queueID, fileObj, response) { 
    var result = $.parseJSON(response).success; 
    alert(result); 
      if (result == false) { 
     alert('invalid') 
    } else { 
     alert('everything is OK'); 
     var size = Math.round(c.size/1024); 
    } 
    return false; 
}, 

如果我alert(response) it alerts FALSE`所以它應該是工作。任何建議爲什麼不是? onAllComplete()函數仍然顯示此文件已成功上傳。

問候, 湯姆

+1

也許試試這個:如果(結果== '假') – IgalSt 2010-08-22 13:52:33

+0

您的版本完美無缺,我忘記取消註釋標題...呃... – Tom 2010-08-22 13:56:30

回答

2

只要服務器返回200狀態的頭部,你的onAllComplete回調將閃光。 onError回調只有當你有錯誤的頭部時纔會觸發:例如500或404。 因此,如果出現問題,您的服務器端代碼應該返回帶有標誌的響應,並且您應該使用onAllComple來執行某種IF。

例如,如果你頁面返回一個JSON錯誤:

[{"success":"false"}] 

你onAllComplete功能看起來就像是:

'onComplete': function(ev, queueID, fileObj, response) { 
      var result = $.parseJSON(response).success; 
      if (!result) 
       alert('invalid') 
         else 
          alert('everything is OK'); 
     } 
+0

在閱讀文檔時,我錯過了有關標題的部分。你的意思onComplete()不onAllComplete(),對不對?無論如何,我做了類似之前,仍然顯示文件已完成(即使我只在我的上傳文件中只放入'echo json_encode(array('success'=>'false'));'想知道爲什麼。 。根據我的知識,它應該工作。任何想法? – Tom 2010-08-22 13:40:30

+1

onComplete和onAllComplete之間的區別在於,每次完成上傳文件時都會觸發onComplete,並且當完成上傳所有文件時,onAllComplete將會被觸發(如果您有5個文件onComplete將被解僱5次,而onAllComplete將被解僱一次) 只要你的php代碼沒有任何500錯誤(並存在於服務器上),你將不會進入onError回調。在onComplete或onAllComplete(這對你更好)的情況下做一個IF,以便成功是假的(在我的例子中是行) – IgalSt 2010-08-22 13:44:52

+0

@Pekka - 當然我做了..但是我今天有點累了測試APC,uploadprogr ess),我忘記了...取消註釋這部分。美味的。 @lgalSt - 我忘了取消註釋到我的代碼。想知道是否有任何方法可以編輯文件塊中顯示的錯誤消息?目前它顯示'HTTP錯誤'。 **編輯**我可以發誓我看到Pekka之前發佈的評論:D – Tom 2010-08-22 13:55:02