Впервые имеем дело с JSON.У меня есть php-файл, который обрабатывает post-переменные, отправленные ему через ajax, и затем он возвращает массив json_encoded.Я не могу повторить его, потому что он заключен в двойные кавычки.Как мне обойти это?
Код jquery:
$j.ajax({
type: 'GET',
url: 'http://example.com/doaction.php',
data: 'num=' + fileNum[1],
success: function(jsonobj) {
for (var key in jsonobj) {
if (jsonobj.hasOwnProperty(key)) {
var jsonob = jsonobj[key];
console.log(key + " = " + jsonob);
}
}
}
});
Код php в doaction.php:
if ($_GET['num']) {
$meta = file_meta($_GET['num']); // returns an array
echo json_encode($meta);
}
file_meta function:
function file_meta($num = 1) {
$num = '_' . $num;
$meta = array(
'filename' . $num => array(
'value' => ''),
'link' . $num => array(
'value' => ''),
'description_' . $num => array(
'value' => ''),
'metadata' => array(
'type' => 'checkbox',
'label' => 'Indicate applicable competencies:',
'items' => array(
'core_teaching' . $num => array(
'label' => 'Core Teaching',
'value' => 0
),
'teaching_learning' . $num => array(
'label' => 'Teaching Learning',
'value' => 0
),
'instructional_design' . $num => array(
'label' => 'Instructional Design',
'value' => 0
),
'assignment_and_evaluation' . $num => array(
'label' => 'Assignment & Evaluation',
'value' => 0
),
'research' . $num => array(
'label' => 'Research',
'value' => 0
),
'mentoring' . $num => array(
'label' => 'Mentoring',
'value' => 0
)
)
)
);
return $meta;
}
Результат в консоли не тот, который я ожидал.Он должен быть в парах ключ-значение, но вместо этого, как показано ниже, это бессмысленно.
500 = ,
501 = "
502 = v
503 = a
.
.
.
Я почти уверен, что это потому, что объект json, который получает $.ajax()
, заключен в кавычки.Когда я присваиваю object
без кавычек непосредственно jsonobj
, я получаю правильный результат.Когда я вызываю file_meta () напрямую из функции $.ajax()
, я получаю правильный результат:
var jsonobj = <?php $etc = file_meta(); echo json_encode($etc); ?>;
// iterate here...
Однако это не то, что я хочу, потому что file_meta()
необходимо передать со значением из извлеченного элементапо событию клика.И отправка через $ _GET - единственное, что я знаю.