0

我有一种情况,我坚持在 jquery form-plugin 的 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 响应中使用不同的错误号添加很多 if 条件。

请问有人有更合乎逻辑的想法吗?

4

2 回答 2

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 );
  }
});
于 2013-02-08T04:43:49.353 回答
0

为了减少在 JS 中遍历数组并将错误 ID 与描述匹配,您能否将错误描述本身关联到在 ajax 响应中中继?这将使您的 JS 保持精简并保持服务器端的错误处理。

例子:

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

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

} else {
$error = error_descriptions[1]; 
}
于 2013-02-08T04:45:08.400 回答