準備
MonacaでAjaxpプログラミングする場合、jQueryが便利なので、[設定]の[JS/CSSコンポーネント]で[jQuery (Monaca Version) バージョン:X.X.X]を入れておく(これを書いているときは2.0.3)。
WebAPIで提供するデータのタイプとしては大きくJSON形式とXML形式がある。jQueryの$.ajaxはデフォルトではテキスト形式でデータを取得するが、WebAPIが提供するデータ形式に合わせておくと何かと便利。
そこで、データ形式ごとにAjaxプログラミングを説明する。
なお、jQueryによるAjaxのプログラミングについては「jQuery入門-Ajax(Shorthand Methods)-」が詳しい。
JSON形式の場合
WebAPIが提供するデータが次のようなJSON形式の場合を考える。
{
"list": [
{
"memo": null,
"facilityId": "1.3.6.1.4.1.9414.70.1",
"patientModel": {
"kanaName": "サヤマ セイジ",
"gender": "male",
"genderDesc": "M",
"birthday": "1948-06-15",
"fullName": "佐山 清二",
"id": 31
},
"deptName": "内科",
"deptCode": "01",
"doctorName": "守久 遼子",
"doctorId": "10002",
}
]
}
リスト1
この場合、Javascriptのコードは次のようになる。ただし、ここでは id に "Ajax-F" が設定されているHTML要素をクリックしたときにAjaxが実行されるものとしている。
$(document).on('click', '#Ajax-F', function(){
$.ajax({
url: "data/pvtList.json",
type: "GET",
dataType: "json"
}).done(function(data, status, xhr) {
alert(data.list[0].facilityId);
}).fail(function(xhr, status, error) {
alert('Fail');
});
});
リスト2
データの受信形式を dataType で指定している。JSONデータを取得するので、ここには"json"を記述する。何も指定しなかった場合は"text"になる。そうなると、取得したデータ data をJSON.parse()関数を使ってJSONオブジェクトに変換しなければならない。
Ajax成功時(done()関数)、コールバック関数の第1引数 data にはJSON形式のオブジェクトが格納されて返ってくるので data.list[0].facilityId といった感じで要素にアクセスできる。
このプログラムを実行すると次のようになる。
| 図1.AjaxでJSONデータを取得 |
XML形式の場合
次にXML形式のデータが返ってくる場合を説明する。
次のようなデータを考える。
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_45" class="java.beans.XMLDecoder">
<object class="open.dolphin.infomodel.BundleMed">
<void property="admin">
<string>[用法] 1日3回毎食後に</string>
</void>
<void property="claimItem">
<array class="open.dolphin.infomodel.ClaimItem" length="1">
<void index="0">
<object class="open.dolphin.infomodel.ClaimItem">
<void property="code">
<string>610421320</string>
</void>
<void property="name">
<string>アダラートCR錠10mg</string>
</void>
<void property="number">
<string>3</string>
</void>
<void property="unit">
<string>錠</string>
</void>
</object>
</void>
</array>
</void>
<void property="className">
<string>投薬(内服・頓服・調剤)(院外)</string>
</void>
</object>
</java>
リスト3
この場合、Javascriptのコードは次のようになる。
$(document).on('click', '#Ajax-F', function(){
$.ajax({
url: "data/medicine.xml",
type: "GET",
dataType: "xml"
}).done(function(data, status, xhr) {
// xmlオブジェクト -> jQueryオブジェクト
$xml = $(data);
alert($xml.find('void[property="name"]').find('string').text());
}).fail(function(xhr, status, error) {
alert('Fail');
});
});
リスト4
XML形式を返すWebAPIの場合、5行目で dataType に "xml" を設定する。
すると、6行目の done() のコールバック関数の第1引数 data にはXMLオブジェクトが格納される。8行目では、XMLデータを扱いやすくするためにXMLオブジェクトをjQueryオブジェクトに変換している。こうすれば、9行目のように欲しいデータにfind()メソッドやtext()メソッドを使ってアクセスできる。
$xml.find('void[property="name"]').find('string').text()これは、property属性がnameの要素内のstring要素に記述されている文字列「アダラートCR錠10mg」を取得するためのコードである。
実行結果は次のようになる。
| 図2.XML形式の場合の実行結果 |
0 件のコメント:
コメントを投稿