PHP json_encode - один и тот же код один раз доставляет массив и один раз объект - PullRequest
0 голосов
/ 17 ноября 2018

Я использую один и тот же код в двух PHP-классах.Я скопировал и вставил это.В одном классе массив поставляется в JavaScript, в котором я тоже использую скопированный / вставленный фрагмент кода и один раз объект.

Вот код PHP:

private $status_good = array('Status' => 'good');
private $status_fail = array('Status' => 'fail');

echo json_encode($this->status_fail);

А вот код JS / jquery:

    $.post("./someclass.php",
       {
            code    :   this.code,   
            input   :   this.input
       },   
       function( data ){
          console.log("Data: ")
          console.log(data );
       }

Как только консоль говорит: Data: {"Status":"fail"}
В другом скрипте: Data: Object { Status: "fail" }

Я не делаю UTF-манипуляции, ни какие-либо манипуляции с заголовками.
Пожалуйста, будьте любезны и скажите, как это может происходить с одним и тем же кодом в разных классах.
Заранее спасибо.

1 Ответ

0 голосов
/ 17 ноября 2018

Добавьте аргумент dataType к $.post и / или установите заголовок Content-type в php.

$. Ajax делает «лучшее предположение» для типа данныхвозвращается, если ему явно не сказано, чего ожидать, и нет заголовка, который бы помог ему принять решение.

Может показаться, что в одном случае это делается правильно и анализирует JSON, а в другом - обработкуэто как текст и возвращение строки для обратного вызова.

$.post("./someclass.php",
   {
        code    :   this.code,   
        input   :   this.input
   },   
   function( data ){
      console.log("Data: ")
      console.log(data );
   },'json')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...