遠隔サーバー情報取得後発動のjavascript
スマートフォンアプリをjavascriptで作っております。
●【現在できていること】
【1】まずは、アプリ内から、自分の端末情報(下記の場合「G:8116556330」(取得方法はappleのシステムに準ずる)を取ります。(下記はわかりやすくするために固定で記載してますが、実際にはjavascriptによる読み込みとなります)
【2】次に、そのデータに関する情報を、自社サーバーのデータに取りに行きます。
( $.post("https://hoge.jp/search.php", {search_term : name_id}, function(data))
【3】その情報を表示させます。
【現在の仕様】
【3】を表示させるためには【1】【2】が完全取得された後に【3】用のfunctionを発動させなければなりません。
【1】取得のタイムラグ、【2】取得のタイムラグ、およびサーバーから端末までのタイムラグがあることから、現在、下記のようにbodyが読み込まれて5秒後に「document.getElementById('search_button2').click();」の形で時差クリックさせ「.click(function(e)」を発動させて【3】を表示させています。
【困りごと】
上記の方法だと、回線の混雑にかかわらず5秒後にクリックが発動されてしまうため、混雑時には表示できないリスクがあります。
【やりたいこと】
サーバーから端末に完全に情報を取得出来てから、即座に【3】用のfunctionを発動させたいです。または、クリックなど使用せず下記のGETスクリプト内で自動発動する方法があれば尚嬉しいです。
HTMLの読み込み後であればonloadが使用できますが、サーバー情報取得後というのが分かりません。ご指導いただきたくお願いいたします。
【GETスクリプト】
<script type="text/javascript">
var name_id;
name_id = 'G:8116556330';
$(document).ready(function(){
$("#search_button2").click(function(e){
e.preventDefault();
ajax_search();
});
});
function ajax_search(){
$("#search_results").show();
$.post("https://hoge.jp/search.php", {search_term : name_id}, function(data){
if (data.length>0){
$("#search_results").html(data);
}
})
}
</script>
【時差スクリプト(body読み込み後5秒後にボタンをクリック)】
<SCRIPT language="JavaScript">
function loadHello(){
document.getElementById('search_button2').click();
}
setTimeout(loadHello, 5000);
</script>
【Body要素 ボタン 表示場所】
<body onLoad="loadHello()">
<a id="search_button2">search_button2</a>
<div id="search_results"></div>
</body>
お礼
ありがとうございます。 そちらも+と&で試しましたが、変数に値は代入はされてるようなんですが これだとメソッド自体が動きませんでした。
補足
色々試してみたところ自己解決しました! js.CodeObject.関数名 引数1,引数2 で引数を2つ以上わたすことができました。 一応必要な部分だけ書いておきます。 Dim js As New ScriptControl js.Language = "JScript" Dim cd As String cd = cd & "function clk(ie,URL){" cd = cd & "ie.document.querySelector('a[href*=""' + URL + '""]').click();" cd = cd & "}" js.AddCode (cd) ’ここに必要な処理 URL = "http://rdsig.yahoo.co.jp/" js.CodeObject.clk IE, URL