Pazpar2 1.4.4-2 for squeeze
[pazpar2-moved-to-github.git] / js / pz2.js
index 58cf4a3..3665c4e 100644 (file)
--- a/js/pz2.js
+++ b/js/pz2.js
@@ -637,6 +637,13 @@ pz2.prototype =
                                 bytarget[i][nodeName] = nodeText;
                             }
                         }
+                        if (bytarget[i]["state"]=="Client_Disconnected") {
+                          bytarget[i]["hits"] = "Error";
+                        } else if (bytarget[i]["state"]=="Client_Error") {
+                          bytarget[i]["hits"] = "Error";                          
+                        } else if (bytarget[i]["state"]=="Client_Working") {
+                          bytarget[i]["hits"] = "...";
+                        }
                     }
                     
                     context.bytargetCounter++;
@@ -707,6 +714,7 @@ var pzHttpRequest = function ( url, errorHandler ) {
         }
 };
 
+
 pzHttpRequest.prototype = 
 {
     safeGet: function ( params, callback )
@@ -805,8 +813,33 @@ pzHttpRequest.prototype =
                        this.request.responseXML == null) {
               if (this.request.responseText != null) {
                 //assume JSON
-                var json = eval("(" + this.request.responseText + ")");
-                this.callback(json, "json");
+               
+               var json = null; 
+               var text = this.request.responseText;
+               if (typeof window.JSON == "undefined") 
+                   json = eval("(" + text + ")");
+               else { 
+                   try {
+                       json = JSON.parse(text);
+                   }
+                   catch (e) {
+                       // Safari: eval will fail as well. Considering trying JSON2 (non-native implementation) instead
+                       /* DEBUG only works in mk2-mobile
+                       if (document.getElementById("log")) 
+                           document.getElementById("log").innerHTML = "" + e + " " + length + ": " + text;
+                       */
+                       try {
+                           json = eval("(" + text + ")");
+                       }
+                       catch (e) {
+                           /* DEBUG only works in mk2-mobile
+                           if (document.getElementById("log")) 
+                               document.getElementById("log").innerHTML = "" + e + " " + length + ": " + text;
+                           */
+                       }
+                   }
+               } 
+               this.callback(json, "json");
               } else {
                 var err = new Error("XML response is empty but no error " +
                                     "for " + savedUrlForErrorReporting);