оповещение об ответе не работает в jquery,ajax

#javascript #jquery #ajax

Вопрос:

Я преобразовал возвращенные данные с сервера в объект JS в ajax/jquery:

         success: function(response) {
        var returnDataToObj = JSON.parse(response);
        var folderRow = returnDataToObj["row"];
        var folderId = returnDataToObj["folderId"];
        if (folderRow == 1) {
            //do something
        } else {
            alert(response);
        }
    }
 

но проблема в том , что из-за JSON.parse() , else блок не работает, и он показывает эту ошибку:

Неперехваченная ошибка синтаксиса: Неожиданный токен F в JSON в позиции 0 в JSON.разбор

Тем не менее, я решил эту проблему следующим способом, но я уверен, что это не лучшее решение:

 success: function(response) {
        var returnData = response;
        if (returnData.startsWith("Failed")) {
          alert(returnData);
          stop();
        } else {
          var returnDataToObj = JSON.parse(response);
          var folderRow = returnDataToObj["row"];
          var folderId = returnDataToObj["folderId"];
          if (folderRow == 1) {
            //do something
          }
        }

      }
 

Таким образом, я добавил слово «Сбой» в начало всех сообщений об ошибках, которые я определил, и с помощью функции StartsWith() я определил, что если строка в ответе начинается с «Сбой», то выполните блок if (), в противном случае выполните else. проблема этого метода заключается в том, что я должен изменить все сообщения об ошибках, и, безусловно, это не очень хороший метод. Я знаю, что это должен быть лучший метод.

Комментарии:

1. Почему бы не повторить статус не 200 и а { "Error":"Failed because..."} и не поискать это?

2. Что вы получаете, когда делаете console.log(response) это ? Похоже response , что вы пытаетесь проанализировать недопустимый JSON

3. Вы должны написать свой сервер таким образом, чтобы он всегда отправлял согласованные данные. Пусть он отправит обратно правильный JSON, даже если это логическая проблема.

4. @mplungjan Я не очень разбираюсь в js, я буду очень благодарен, если вы скажете мне, что именно делать в коде.

5. Из вашего кода я понял, что вы отправляете обратно либо { "row": 1, "folderId": 2 } Failed Folder not found или что-то подобное. Я говорю вам не делать этого и вместо этого отправлять обратно { failed: "folder not found" } , чтобы это всегда был JSON. Как «Я просто хочу предупредить ответ» вообще может быть ответом на это? Неужели вы не понимаете, в чем здесь техническая проблема? Вы пытаетесь проанализировать что-то как JSON, что не является JSON.