Saya ingin menerapkan fungsi AJAX sederhana secara lokal yang memungkinkan saya untuk autocomplete judul node yang sudah ada sebagai tipe pengguna. Untuk itu, saya perlu kemampuan untuk memiliki API yang dapat saya cari pada judul node. Masalahnya adalah bahwa ketika saya output JSON mentah, itu datang dikelilingi oleh tag. Jadi, apa pun yang saya lakukan, saya tetap mendapatkan ...
<html>
<head>
</head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;"> {json here}</pre>
</body>
</html>
Saya sudah mencoba menerapkan templat halaman khusus yang hanya menghasilkan konten, yang menghasilkan hasil yang sama. Inilah cara saya saat ini melakukan ini, dalam file modul saya ...
<?php
/**
* Implementation of hook_menu()
*/
function content_relation_menu() {
$items = array();
$items['api'] = array(
'title' => 'Search',
'page callback' => 'content_relation_get',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
function content_relation_get($term = '') {
drupal_add_http_header('Content-Type', 'application/javascript; utf-8');
$var = json_encode(
db_query("SELECT nid,title FROM {node} WHERE title LIKE :title LIMIT 5", array(":title" => $term.'%'))->fetchAll()
);
echo $var;
exit(0);
}
Bagaimana saya bisa mengembalikan JSON mentah saja?
nodes
ajax
javascript
json
rybosome
sumber
sumber
drupal_json_output
fungsinya. Lihat di sini atau di sana untuk contoh kerja.Jawaban:
Untuk Drupal 6, Anda dapat menggunakan drupal_json
Untuk Drupal 7, ubah untuk menggunakan drupal_json_output
Mungkin juga akan lebih aman untuk mem-parsing query untuk membersihkan, memeriksa kesalahan, dll, daripada hanya mencoba mengembalikan hasilnya.
sumber
Saya melihat bahwa tidak ada jawaban yang diberikan untuk Drupal 8.
Untuk memproses JSON di Drupal 8, gunakan kode berikut:
Anda dapat membaca lebih lanjut di sini
sumber
Berikut adalah contoh kehidupan nyata untuk Drupal 8
https://github.com/npinos/drupal8-greenhouse
Termasuk pengontrol dan perutean
Kode ini mengembalikan jumlah simpul dalam format json yang diekspos sebagai titik akhir
sumber