Ajax / JQuery: не удается прочитать возвращенные данные (не определено) - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь записать данные JSON, возвращенные в приведенном ниже коде, и они всегда возвращаются в консоли как неопределенные.

  $.ajax({
    url:"campcpcedit.php",
    method:"POST",
    data:{platform:platform, btnid:btnid, newcpc:newcpc},
    success:function(data){
      if (data.success) {
            myAlertTop();
            changeBid(_btn);
        }
        else {
            myAlertBottom();
            console.log(data.message);
        }
    }
  });

Ответ JSON такой:

{"success":false,"message":"Error"}

Код для его генерации в campcpcedit. php:

  if($conn->query($upquery) === TRUE && $apiSuccess == "1") {
      echo json_encode(array('success' => true));
  }
  else{
      echo "Error: " . $upquery . "<br>" . $conn->error;
      echo json_encode(array('success' => false, 
                             'message' => "Error")
                 );
        }

if (data.success) работает, когда 2 функции myAlertTop () и myAlertBottom () работают корректно. Я не могу понять, что я делаю неправильно.

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Я удивлен, узнав, что решение заключалось в использовании следующего ...

console.log(jQuery.parseJSON(data).message);

Я считаю, что причина его неудачи в том, что ваш PHP возвращает следующую строку примера обратно клиент, который клиент не может преобразовать в объект (который $.ajax попытается сделать по умолчанию).

Error: XXX<br>xxx{"success":false,"message":"Error"}

var jsonReturn = 'Error: XXX<br/>xxx{"success":false,"message":"Error"}';
console.log(jQuery.parseJSON(jsonReturn).message);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Вместо этого я предлагаю вам удалить первый echo из вашего PHP и вместо этого добавить новый элемент в ваш массив ...

// echo "Error: " . $upquery . "<br>" . $conn->error;
echo json_encode(array('success' => false, 
                       'message' => "Error",
                       'error' => $upquery . "<br>" . $conn->error));

Это должно привести к правильно сформированной строке JSON, которая может быть проанализирована, означая, что переменная data в success:function(data) - это объект, который вы ожидаете ...

{"success":false,"message":"Error","error":"XXX<br>xxx"}

var jsonReturn = '{"success":false,"message":"Error","error":"XXX<br/>xxx"}';
console.log(jQuery.parseJSON(jsonReturn).message);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
0 голосов
/ 30 апреля 2020

Проблема заключалась в том, что я должен проанализировать ответ JSON.

console.log(jQuery.parseJSON(data).message);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...