در متدهای ajax هنگامی که از شی XMLHttpRequest استفاده میکنید در متد onreadystatechange، مقدار readyState را بررسی میکنیم. اما سوال اینجاست که این اعداد چه معنایی دارند.
مثال:
function UploadFile() { var formData = new FormData(); var fileInput = $("#fileupload"); for (var i = 0; i < fileInput.files.length; i++) { formData.append(fileInput.files[i].name, fileInput.files[i]); } var xhr = new XMLHttpRequest(); xhr.open('POST', '@Url.Action("UploadFiles", "Home")'); xhr.send(formData); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { alert(xhr.responseText); } if (xhr.status == 400) { alert(xhr.responseText); } } }
متد سمت سرور:
[HttpPost] public ActionResult UploadFiles() { if (Request.Files.Count > 0) { for (int i = 0; i < Request.Files.Count; i++) { HttpPostedFileBase file = Request.Files[i]; int fileSize = file.ContentLength; } return Json("UPload completed!"); } else { return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "فایلی برای آپلود انتخاب نشده است!"); } }
مقادیر readyState به شرح زیر است:
مقدار | وضعیت | جزییات |
0 | UNSENT | Client has been created. open() not called yet. |
1 | OPEN | open() has been called. |
2 | HEADERS_RECEIVED | send() has been called, and headers and status are available. |
3 | LOADING | Downloading; responseText holds partial data. |
4 | DONE | The operation is complete. |