diff --git a/fields/vmordernumbercounters.php b/fields/vmordernumbercounters.php
index bec25186d6870737c0472f2af6f67a8198864e5f..b3aff6341c3c71fe287a060629d0526ef0a0de60 100644
--- a/fields/vmordernumbercounters.php
+++ b/fields/vmordernumbercounters.php
@@ -68,6 +68,7 @@ class JFormFieldVmOrdernumberCounters extends JFormField {
         JText::script('PLG_ORDERNUMBER_JS_DELETECOUNTER');
         JText::script('PLG_ORDERNUMBER_JS_DELETE_FAILED');
         JText::script('PLG_ORDERNUMBER_JS_ADD_FAILED');
+        JText::script('PLG_ORDERNUMBER_JS_JSONERROR');
     }
     protected function getInput() {
         $pluginpath = '/plugins/vmshopper/ordernumber/ordernumber/';
diff --git a/language/en-GB/en-GB.plg_vmshopper_ordernumber.ini b/language/en-GB/en-GB.plg_vmshopper_ordernumber.ini
index 0eb4e45ed3016518681501c3a30af30515dcb509..5c252783c7453847aacf3683630bdb72870e7818 100644
--- a/language/en-GB/en-GB.plg_vmshopper_ordernumber.ini
+++ b/language/en-GB/en-GB.plg_vmshopper_ordernumber.ini
@@ -64,5 +64,5 @@ PLG_ORDERNUMBER_JS_INVALID_COUNTERVALUE="You entered an invalid value for the co
 PLG_ORDERNUMBER_JS_MODIFY_FAILED="Failed modifying counter {0}"
 PLG_ORDERNUMBER_JS_DELETE_FAILED="Failed deleting counter {0}"
 PLG_ORDERNUMBER_JS_ADD_FAILED="Failed adding counter {0}"
-
+PLG_ORDERNUMBER_JS_JSONERROR="Error reading response from server:"
 
diff --git a/language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini b/language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini
index 0eb4e45ed3016518681501c3a30af30515dcb509..5c252783c7453847aacf3683630bdb72870e7818 100644
--- a/language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini
+++ b/language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini
@@ -64,5 +64,5 @@ PLG_ORDERNUMBER_JS_INVALID_COUNTERVALUE="You entered an invalid value for the co
 PLG_ORDERNUMBER_JS_MODIFY_FAILED="Failed modifying counter {0}"
 PLG_ORDERNUMBER_JS_DELETE_FAILED="Failed deleting counter {0}"
 PLG_ORDERNUMBER_JS_ADD_FAILED="Failed adding counter {0}"
-
+PLG_ORDERNUMBER_JS_JSONERROR="Error reading response from server:"
 
diff --git a/ordernumber/assets/js/ordernumber.js b/ordernumber/assets/js/ordernumber.js
index 9ef759b15e47226fdb70c31324ede991b166b46f..c7d64f839fe524bc935dabb5bd3806c91ddc42e4 100644
--- a/ordernumber/assets/js/ordernumber.js
+++ b/ordernumber/assets/js/ordernumber.js
@@ -60,8 +60,13 @@ var ajaxEditCounter = function (btn, nrtype, ctr, value) {
             url: "index.php?option=com_virtuemart&view=plugin&type=vmshopper&name=ordernumber&action=setCounter&format=raw",
             data: { nrtype: counter.type, counter: counter.counter, value: value },
             success: function( data ) {
-                var json = data ? jQuery.parseJSON(data) : null;
-                handleJSONResponse(json, counter);
+                try {
+                    var json = jQuery.parseJSON(data);
+                    handleJSONResponse(json, counter);
+                } catch (e) {
+                    alert(Joomla.JText._('PLG_ORDERNUMBER_JS_JSONERROR')+"\n"+e);
+                    return;
+                }
                 if (json.success>0) {
                     jQuery(counter.row).children(".counter_value").text(value);
                 } else {
@@ -88,10 +93,15 @@ var ajaxDeleteCounter = function (btn, nrtype, ctr, value) {
             url: "index.php?option=com_virtuemart&view=plugin&type=vmshopper&name=ordernumber&action=deleteCounter&format=raw",
             data: { nrtype: counter.type, counter: counter.counter },
             success: function( data ) {
-                var json = data ? jQuery.parseJSON(data) : null;
-                handleJSONResponse(json, counter);
+                try {
+                    var json = jQuery.parseJSON(data);
+                    handleJSONResponse(json, counter);
+                } catch (e) {
+                    alert(Joomla.JText._('PLG_ORDERNUMBER_JS_JSONERROR')+"\n"+e);
+                    return;
+                }
                 if (json.success>0) {
-                    jQuery(counter.row).fadeOut(1500, function() { $(this).remove(); });
+                    jQuery(counter.row).fadeOut(1500, function() { jQuery(counter.row).remove(); });
                 } else {
                     alert (String.Format(Joomla.JText._('PLG_ORDERNUMBER_JS_DELETE_FAILED', "Failed deleting counter {0}"), counter.counter));
                 }
@@ -114,16 +124,22 @@ var ajaxAddCounter = function (btn, nrtype) {
             data: { nrtype: nrtype, counter: countername },
             success: function( data ) {
                 var json = data ? jQuery.parseJSON(data) : null;
-                handleJSONResponse(json, { type: nrtype, counter: countername, value: 0, row: row });
+                try {
+                    var json = jQuery.parseJSON(data);
+                    handleJSONResponse(json, null);
+                } catch (e) {
+                    alert(Joomla.JText._('PLG_ORDERNUMBER_JS_JSONERROR')+"\n"+e);
+                    return;
+                }
                 if (json.success>0) {
                     if (json.newrow) {
                         jQuery(row).before(jQuery(json.newrow));
                     }
                 } else {
-                    alert (String.Format(Joomla.JText._('PLG_ORDERNUMBER_JS_ADD_FAILED', "Failed adding counter {0}"), counter.counter));
+                    alert (String.Format(Joomla.JText._('PLG_ORDERNUMBER_JS_ADD_FAILED', "Failed adding counter {0}"), countername));
                 }
             },
-            error: function() { alert (String.Format(Joomla.JText._('PLG_ORDERNUMBER_JS_ADD_FAILED', "Failed adding counter {0}"), counter.counter)); },
+            error: function() { alert (String.Format(Joomla.JText._('PLG_ORDERNUMBER_JS_ADD_FAILED', "Failed adding counter {0}"), countername)); },
             complete: function() { jQuery(loading).remove(); },
         });
     }