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

Antworten:



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.


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.


WARNUNG : Das im obigen Beitrag empfohlene Modul wird als unsicher beworben und ab
Mittwoch
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.