2013-06-17 3 views
0

Я возвращаю строку, которая выглядит следующим образом:Недопустимые символы в JSON.parse (result.responseText);

[{"name":"John","age":"21","gender":"m"}] 

, а затем сделать:

JSON.parse(result.responseText); 

поместить данные в сеточного управления. Он отлично работает в FF. В IE моя строка выглядит следующим образом:

[{\"name\":\"John\",\"age\":\"21\",\"gender\":\"m\"}] 

и слэши не обрабатываются и мой JSON.parse(result.responseText) не может дать мне неверном символов. Почему у меня разные ответы между браузерами и как я могу исправить эту проблему? Я отправляю полный звонок.

Ext.Ajax.request({ 
     url : 'PersonServlet', 
     method: 'POST',     
     params :{'id': id}, 

     success: function (result, request) { 
      resultData = JSON.parse(result.responseText); 
      store.removeAll(); 
      store.add(resultData); 

     }, 
     failure: function (result, request) { 
      resultData = JSON.parse(result.responseText); 
     } 
    }); 
+0

JSON.parse IE8 не любит разбирать литералы массива, только объекты. Вы можете сделать что-то вроде wrap your array в одном объекте prop: {data: [{"name": "John", "age": "21", "gender": "m"}]} и say resultData = JSON.parse (result.responseText) .data; – dandavis

+0

Я попытался с возвращенными данными вроде этого "{data: [{'name': 'John', 'age': '21', 'gender': 'm'}]}" but resultData = JSON.parse (result .responseText); вызов не работает и дает мне ошибку JSON не указан. – JS11

+0

Мог ли я просто очистить responseText, чтобы заменить обратную косую черту на пустое пространство? Это будет работать, но это хорошее решение? – JS11

ответ