//tips
//unity/js連動
Unityでjsonで書き込んだ内容をwebに反映させることができたので、今度は反映内容をjson.lengthではなく、jsonの中身で行なっていく。
Parseを使ってjsonの中身を数値化してみたがエラーが出ている。
function calc()
{
var obj =JSON.parse(json);
for(var i=0;i<json.length;i++)
{
var number += obj.message;
}
return number;
json内容を細かく取り出せるように設定したが+=の部分でなぜかエラーが出ている。
for(i = 0, len =json.length; i < len; i++)
{
var numbar += parseInt(json[i]['message']);
}
return number;
}
Webの方で確認するとcal()の実行からできていないとの記載があったので再度json.lengthにreturn内容を直すと正常に機能する。
他にはUncaught ReferenceError: number is not definedと出てきているのでvar number;ではなくvar number=0;とすると正常に機能するようになった。
var number=0;
//var obj =JSON.parse(json);
for(i = 0, len =json.length; i < len; i++)
{
var num = parseInt(json[i]['message']);
number = number + num;
}
return number;
型の認識ができないVarを使うときは要注意。
計算後にjson内容の要素を削除するdelete json.message;を組み込む。
Filter関数なども試したが、削除できない。これはサーバーにjsonがあるためかと思うので修正版をPOSTする形にしていく。
$.ajax({
url: "/posts/" + PostID,
type: "POST",
data: {"id":PostID,"_method": "DELETE"}
としてもそもそものPostIDがhtmlのタグにidとして紐付いている必要があり、外部からの数値更新のたびに反映するというやり方とは相性が悪い。
Jsonでは記述を変化させず、Js側で処理を完結できるようにした方が良さそう。
Jsの見直しを初めており、dataプロパティがなぜ出てくるのかの一例を見つけたので下記に記載。
$(function(){
$(“#btn”).on(“click”,{name:”yasuo”},sayHello);
});
function sayHello(event){
alert(event.data.name+”さん、こんにちは”) ;
}
$(function)はjQueryのコード記述であり、
$(document).ready(function(){
//コード内容
});
の略となっている。
$(“#btn”はhtmlのid部分を取得しており、onがそのボタンのイベントトリガーとなる。
トリガーの内容がonの後に記述され、”click”でクリックされた場合、{name:”yasuo”}が引数、sayHelloが関数となっている。
sayHelloの関数の中の引数はevent.data.nameと表されている。
引数として渡されたオブジェクトは、ワンクッション挟み、関数側で受け取った変数のdataプロパティに格納されることになる。
イベントの発生元の要素を表すthisは$(this)と記述され、htmlのイベント発生元を指し示す。#idのついたボタンをよく見かける。