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() 'を渡し、 php部分のようにajaxFormからのjson応答を解析でき ます。

$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 に答える