diff ajax.js @ 865:80f6f31d3711

File upload fixes.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 26 Nov 2014 11:45:30 +0200
parents 1a2ec2f85a97
children a397d2be6d53
line wrap: on
line diff
--- a/ajax.js	Wed Nov 26 11:34:48 2014 +0200
+++ b/ajax.js	Wed Nov 26 11:45:30 2014 +0200
@@ -69,6 +69,12 @@
 }
 
 
+function jsTitleMessageBox(title, msg)
+{
+  jsMessageBox("<h1>"+title+"</h1><div>"+msg+"</div>");
+}
+
+
 function jsConfirmBox(msg, cb_ok, cb_cancel, cb_data)
 {
   var nitem = document.getElementById("messageBox");
@@ -288,14 +294,47 @@
   var formData = new FormData(formElem);
   var req = jsCreateXMLRequest();
   req.upload.addEventListener("progress", jsUploadProgress, false);
-  req.addEventListener("load", function(ev)
-    {
-      if (fileCallback)
-        setTimeout(fileCallback, 1);
-    }, false);
-
   req.addEventListener("error", jsUploadError, false);
   req.addEventListener("abort", jsUploadAbort, false);
+
+  req.onreadystatechange = function()
+  {
+    if (req.readyState == 4)
+    {
+      switch (req.status)
+      {
+        case 902:
+          jsStatusMsg(req.statusText);
+          jsMessageBox(req.responseText);
+          break;
+
+        case 903:
+          {
+            var nitem = document.getElementById("messageBox");
+            if (nitem)
+            {
+              nitem.innerHTML = "<div class='messageBoxInner'>"+ req.responseText +
+                "<div class='messageBoxControls'>"+
+                "</div></div>";
+              nitem.style.display = "block";
+            }
+          }
+          break;
+        
+        case 200:
+          if (fileCallback)
+            setTimeout(fileCallback, 1);
+
+          jsTitleMessageBox("File upload", req.responseText);
+          break;
+        
+        default:
+          jsStatusMsg("["+req.status+" - "+req.statusText+"] "+ req.responseText);
+          break;
+      }
+    }
+  }
+
   req.open("POST", formTarget);
   req.send(formData);
 }