
09.03.2010, 21:20
|
|
Новичок
Регистрация: 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..
|
|
|