2013-02-08 19 views
0

我有一種情況,我堅持在jquery form-plugin中的ajax響應文件上傳期間捕獲相應錯誤的想法。在使用jQuery表單插件的ajax文件上傳過程中的錯誤處理

我會給出我想通過僞代碼實現的想法。

我的PHP是:

$file = strtolower($_FILES["myfile"]["name"]); 
$extension = substr($file, strrpos($file, '.') + 1); 
if($extension == 'jpg'){ 
    // upload the file 
if(move_uploaded_file($_FILES["myfile"]["tmp_name"], $folder . $finalFilename)){ 
    // do something here like 
echo "<div id='statusContainer'> 
<table><tr><td> 
<img src='uploads/".$finalFilename."'> 
</td></tr> 
<tr><td>".$finalts."</td></tr></table> 
</div>"; 
     } 
    } else { 
    $error = 1; // will give numbers to different errors like filetype error, size error etc.. 
    } 

現在我的JS代碼是:

(function() { 
var status = $('#status'); 
$('form').ajaxForm({ 
complete: function(xhr) { 
if(xhr.responseText == "// what do i get echoed here so i can run an array and show user appropriate error like size error, type error etc. // "){ 
    // i want to open a dialog box with correct error message// 
} else{ 
    status.hide().html(xhr.responseText).fadeIn(1000); 
    } 
    } 
    }); 

})(); 

應我得到的Ajax響應呼應錯誤號和運行通過陣列得到的消息?但是接下來我將不得不在ajax響應中使用不同的錯誤號來處理很多條件。

請人有一個更合乎邏輯的想法??

回答

1

你可以做一個數組,並傳遞錯誤json_encode()「荷蘭國際集團並解析從給ajaxForm JSON響應,像 PHP的一部分:

$responseArr = array(); 
if(file_is_uploaded) { 
    $responseArr["error"] = "0"; 
    $responseArr["message"] = "File uploaded success message"; 
} 
else { 
    $responseArr["error"] = "1"; 
    $responseArr["message"] = "Error message here"; 
} 
echo json_encode($responseArr); //pass it as response 

JS部分::

$('form').ajaxForm({ 
    dataType: "json", 
    success: function(response) { 
     //parse json response and perform accordingly 
     console.log(response); 
    } 
}); 
+0

什麼關於HTML響應我正在回顯上傳成功。會提到數據類型爲「json」,然後獲得錯誤響應爲json和成功爲html wud衝突? – coder101

+0

在其他問題上嘗試過不同的建議,把所有的部分和BAM放在一起,它的作用就像一個魅力...感謝sudhir ... – coder101

0

爲了減少在JS中遍歷數組,並將錯誤ID與描述進行匹配,你可以將錯誤描述本身關聯到ajax響應中繼嗎?這將保持你的JS精益和保持錯誤處理服務器端。

例子:

<tr><td>".$finalts."</td></tr></table> 
</div>"; 
} 

$error_descriptions = array("Filesize Error", "Extension Error"); 

} else { 
$error = error_descriptions[1]; 
} 
+0

我將如何區分錯誤從成功的html響應到ajax響應塊? – coder101

+0

如果您的html響應成功是靜態的,那麼編碼您的javascript以輸出成功字符串,如果錯誤描述爲空。 –

+0

對不起,我沒跟着你。你可以修改我的JS功能,並讓你知道你建議我做什麼? – coder101

相關問題