Показать сообщение отдельно

  #8  
Старый 09.03.2010, 21:20
GhOsT_MZ
Новичок
Регистрация: 08.03.2010
Сообщений: 3
С нами: 8514980

Репутация: 0
По умолчанию

Как передать (PHP) HTML через JSON? Суть в том, что нужно передать 2 блока информации, которые должны будут размещены в разных частях страницы. Единственный наиболее вариант - JSON. Так как блоги большого объема, приходится формировать HTML-код на сервере.
Так вот, не получается нормально передать эту радость. При использовании в клиентской части функции eval, получаю ошибку. При попытке использовать функцию $.getJSON из jQuery - не получаю ничего.
Формирование JSON-данных (на входе ассоциированный массив):
PHP код:
function array2json($arr) {
    
$parts = array();
    
$is_list false;
    if (!
is_array($arr)) return;
    if (
sizeof($arr) < 1) return '{}';

    
//Find out if the given array is a numerical array
    
$keys array_keys($arr);
    
$max_length sizeof($arr) - 1;
    if ((
$keys[0] == 0) && ($keys[$max_length] == $max_length)) {//See if the first key is 0 and last key is length - 1
      
$is_list true;
      for (
$i=0$i sizeof($keys); $i++) { //See if each key correspondes to its position
        
if ($i != $keys[$i]) { //A key fails at position check.
          
$is_list false//It is an associative array.
          
break;
        }
      }
    }

    foreach(
$arr as $key => $value) {
      if (
is_array($value)) { //Custom handling for arrays
        
if ($is_list)
          
$parts[] = array2json($value); /* :RECURSION: */
        
else
          
$parts[] = '"' $key '":' array2json($value); /* :RECURSION: */
      
} else {
        
$str '';
        if (!
$is_list)
          
$str '"' $key '":';

        
//Custom handling for multiple data types
        
if (is_numeric($value))
          
$str .= $value//Numbers
        
elseif ($value === false)
          
$str .= 'false'//The booleans
        
elseif ($value === true)
          
$str .= 'true';
        else
          
$str .= '"' addslashes($value) . '"'//All other things
        // :TODO: Is there any more datatype we should be in the lookout for? (Object?)

        
$parts[] = $str;
      }
    }
    
$json implode(','$parts);

    if (
$is_list)
      return 
'[' $json ']';//Return numerical JSON
    
return '{' $json '}';//Return associative JSON
  

Сам вывод в PHP:
PHP код:
print(array2json($ajax_data)); 
Клиентская часть:
Код:
$.getJSON(
      "movies.php?ajax=1&" + newq,
      {},
      function(data) {
        queries++;
        alert(data);
        c
          .empty()
          .append(data['data']);
        if (data["stat"]) {
          $('#ajax_footer').show();
          $('#ajax_query')
            .clone(true)
            .appendTo("#ajax_footer")
            .children(".header")
            .append(queries)
            .parent()
            .children(".data")
            .append(data['stat']);
        }
      });
Может кто подскажет, что делаю не так?

Последний раз редактировалось GhOsT_MZ; 09.03.2010 в 21:23..
 
Ответить с цитированием