@akula22

Странная не постоянная ошибка в JQuery is not defined?

Делаю такой Ajax запрос
$.post(
        "/calc/universal/get-color", {
            id: 1
        },
        function (chromaticity) {
            $chromaticity = jQuery.parseJSON(chromaticity);
            ..........
            $side1 = $chromaticity.color4;
        });

В пхп контроллере
public function actionGetColor()
    {
        $id = \Yii::$app->request->post('id');
        if (isset($id)) {
            $data = Color::find()->where(['id' => $id])->one();
        } else {
            $data = 'no ajax';
        }
        file_put_contents('data.txt', print_r($data, 1));
        return Json::encode($data);
    }


Код отлично срабатывает, но почему-то не всегда, иногда я вижу в консоли хрома(F12) такую ошибку
Uncaught ReferenceError: $chromaticity is not defined
    at Object.success (universal-calc.js:104)
    at fire (jquery.js:3317)
    at Object.fireWith [as resolveWith] (jquery.js:3447)
    at done (jquery.js:9272)
    at XMLHttpRequest.<anonymous> (jquery.js:9514)

universal-calc.js:104 это строка $side1 = $chromaticity.color4;

на стороне пхп и мускула проблем нет, в дебагном файл 'data.txt', массив лежит как надо, а вот в JS чет нето, подскажите где касячу?
  • Вопрос задан
  • 276 просмотров
Пригласить эксперта
Ответы на вопрос 4
thewind
@thewind
php программист, front / backend developer
Может на некоторых страницах аякс запрос идет раньше, чем загрузится jquery? Попробуйте парсить json через нативных джаваскрипт JSON.parse()
Ответ написан
Комментировать
customtema
@customtema
arint.ru
Оберните $.post( в $(function() {
$(function() {
$.post(
... дальше как у вас
});
Ответ написан
Комментировать
alex_keysi
@alex_keysi
Помог с решением? Отметь “правильный ответ”
А почему нет объявления переменной? Var,let,const? Покажите объявление.
Ответ написан
Комментировать
@akula22 Автор вопроса
Ошибку вроде пофиксил, теперь не появляется. скрипт у меня в таком формате, ничего не объявляю

просто идет так:
$.post(
        "/calc/universal/get-format", {
            id: $('#div').val()
        },
 function (format) {
          тут разный код
          потом опять аякс запрос и дальше код внутри его функции
         и так не сколько раз,  и переменные больше не теряются )
        
          
 }
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы