json_encode () ничего не возвращает - PullRequest
1 голос
/ 10 мая 2011

У меня есть скрипт PHP, который анализирует массив с помощью метода json_encode (), но возвращает пустое значение

Код PHP выглядит следующим образом:

$companies = $db->getCustomerNames();
print_r($companies)
if (!empty($companies)){
$jsonstring = json_encode($companies);
echo $jsonstring ; 
}
else{
    echo 'false';
}
  • $ компании заполнены ия могу распечатать его еще

У меня также есть javascript, который выглядит следующим образом

jQuery.ajax({

    type: "GET",
    url: "http://localhost/myscript.php"
    success: function(msg) {
        companies = jQuery.parseJSON(msg);
        //DO OTHER STUFF WITH companies 
    }
});
  • PHP-скрипт подключается к БД и отображает JSON-кодированный массив
  • Javascript получает массив с использованием AJAX, поэтому я могу использовать его содержимое
  • Когда я нажимаю http://localhost/myscript.php, я получаю пустую страницу
  • Работает нормально на моем локальном сервере
  • Страница размещена на Yahoo (не уверен, что она имеет значение)

Ответы [ 4 ]

2 голосов
/ 10 мая 2011

Если массив отображается так, как вы упомянули в тексте вашего вопроса, значит что-то не так.Эта страница должна отображать что-то вроде

["IBM","EDS","MICROSOFT"]

Не могли бы вы также опубликовать соответствующий код PHP?

1 голос
/ 10 мая 2011

Попробуйте использовать function_exist, потому что на некоторых серверах функции json * могут быть отключены или php настроен так, чтобы не использовать их

0 голосов
/ 10 мая 2011

Сначала вы делаете print_r($companies), затем вы делаете echo $jsonstring; Удалите строку print_r, потому что ответ, конечно, не будет допустимой строкой JSON.

Также попробуйте добавить header("Content-Type: text/plain"); перед тем, как выполнить эхои обязательно поместите эту строку перед ЛЮБОЙ выдачей.

0 голосов
/ 10 мая 2011

Ваш js правильный, и, как сказал ДжонП, когда вы нажмете http://localhost/myscript.php, вы должны отобразить массив в виде ["IBM", "EDS", "MICROSOFT"].Проверьте, есть ли у вас код, подобный приведенному ниже:

<?php
$a = array (0 =>'IBM' ,1=>'EDS' ,2=>'SUN' ,3=>'GOOGLE' ,4 => 'ORACLE'); 
echo json_encode($a);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...