در متدهای 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. |