Zurückgeben von JSON-Daten mit Drupal 7

7

card.module

drupal_add_js('jQuery(document).ready(function () {

  currentRequest = $.ajax({
  timeout:0,
  cache: false,
  url: pageUrl,
  dataType: "json",
  type: "GET",
  success: function(data){
  $("#edit-field-currency-type-und-0-value").val(data.currency);

  }

});

Ajax-Anforderungsmodul

$items['mccurr/%'] = array(
'title' => '', 
'page callback' => 'ajax_currency_type', 
'access arguments' => array('access content'), 
'page arguments' => array(1),
'type' => MENU_SUGGESTED_ITEM,
);

function ajax_currency_type($ccode){
 drupal_add_http_header('Content-Type', 'application/javascript; utf-8');
$query = "SELECT countries_country.currency 
        FROM countries_country
        WHERE countries_country.iso2 = '".$ccode."'";
$data = db_query($query);

return drupal_json_encod($data);
}

Ist dies der richtige Weg, um JSON-Daten zurückzugeben? Wenn nicht, wie soll dies erreicht werden? Ich möchte die Daten an car.module zurückgeben.

Vielen Dank

TED
quelle

Antworten:

12

Um $ data im json-Format mithilfe der Seitenrückrufausgabe von Drupal-7 zurückzugeben, sollten Sie Folgendes zurückgeben:

drupal_json_output($data);

in Ihrer Seitenrückruffunktion. Weitere Informationen finden Sie unter: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_json_output/7

Hinweis: In Ihrem Javascript in car.module scheint var pageUrl undefiniert zu sein. Stellen Sie sicher, dass es definiert ist.

Jeet
quelle
1

Sie sollten wirklich niemals eine nicht bereinigte Eingabe weitergeben, siehe "Bobby Tables" .

Drupal hat die Möglichkeit , Datenbankparameter wie diese zu umgehen.

$query = "SELECT countries_country.currency 
    FROM countries_country
    WHERE countries_country.iso2 = :ccode";

$data = db_query($query, array(':ccode' => $ccode));

Beachten Sie, dass Sie auch ->fetchAll()sonst nur ein Datenbankobjekt zurückgeben müssen.

Pobtastic
quelle
0

Ich habe kürzlich dieses Plug & Play-Modul gefunden, das APIs nach Aktivierung aktiviert, um Knoten und Empfehlungen aufzulisten, Benutzer anzumelden / abzumelden und Entitäten mit REST-Aufrufen zu erstellen, die JSON-Daten lesen und ausgeben:

https://www.drupal.org/project/rest_json

Es ist kein weiterer Code oder Konfiguration erforderlich.

user51099
quelle
WARNUNG : Das im obigen Beitrag empfohlene Modul wird als unsicher beworben und ab
Mittwoch