Drupal 7を使用してJSONデータを返す方法


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リクエストモジュール

$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);
}

これはjsonデータを返す正しい方法ですか?そうでない場合、どのようにして達成する必要がありますか?データをcar.moduleに返したいのですが。

ありがとうございました

回答:



1

本当に無害化されていない入力をどこにも渡すべきではありません。「Bobby Tables」を参照してください。

Drupalには、このようなデータベースパラメータをエスケープする機能があります。

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

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

また->fetchAll()、データベースオブジェクトを返すだけでなければならないことに注意してください。


0

私は最近、このプラグアンドプレイモジュールを見つけました。このモジュールは、一度有効にすると、ノードのリストとコマンド、ユーザーのログイン/ログアウト、JSONデータの読み取りと出力を行うREST呼び出しを含むエンティティを作成するためのAPIを公開します。

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

それ以上のコードや設定は必要ありません。


警告:上記の投稿で推奨されているモジュールは、Wed 2017-01-25T13:38:03
dreftymac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.