2011-44 / HTML中の細かい文法ミス / $.getJSON/$.ajax が動かない / 久々にクライアント更新
リンクのクリックでtwitterのタグ検索結果をExtJS4のグリッドタブページで開く処理を実装中のこと。
var text=''; //ツイート本文var tag = new Array(); //text中のタグ認識用
text.replace(pattern_hashtag,'<a href="javascript:void(0)"onclick="makeSearch('+tag[0]+')">'+tag[0]+'</a>');
makeSearch(word)
… API発行用メソッド
テキスト中のURLをタグ検索ページ用に書き換えるところ。
ここのonclickだけ他のonclickは動くのに動かず小一時間悩んでいたのだけど、
< text.replace(pattern_hashtag,'<a href="javascript:void(0)"onclick="makeSearch('+tag[0]+')">'+tag[0]+'</a>');---> text.replace(pattern_hashtag,'<a href="javascript:void(0)"onclick="makeSearch(\''+tag[0]+'\')">'+tag[0]+'</a>');
ものすごく細かい文法ミスしててリアルにorz状態に。
makeSearch('#hoge')
みたいになるわけだから、最後にダッシュ残らないといけないのね。。。
javascript で短縮URLの展開やろうとして、手短にURL展開してくれる ss-o.net さんのAPIを使って展開を試みて、以下のコードを回した。
function urlExpand(url){ var exurl=url; $.ajax({ type:"GET", url :"http://ss-o.net/api/reurl.json?callback=?", data:{url:url}, dataType:"jsonp", success:function(data,status){exurl=data.url;}, error:function(){Ext.Msg.alert('短縮URL取得失敗');} }); return exurl;}
だがこれでsuccessが呼ばれずerrorが呼ばれ、getJSONを使って同様にするもやはり動かず。 一応戻ってきたjsonファイルを確認するも、きちんとjqueryで関数名をつけた正規のjsonpが返ってきてた。 つまり、通信も成功してて、その中身も正しいjsonなのを確認したのだけど、何故か弾かれてしまっている。
結論から先に言うと、やっぱりjQueryがページ読込前には動けないってところと関係が深いらしい。
アプリ開いて最初に取得した分は思うように動かなかったのだが、アプリ開いたまま更新で取得した分は問題なく処理を終えた。 となると、アプリの骨組みを読み込むタイミングでonReadyとか$.系の処理を一旦完了して(jQueryを使用可能にして)、そこから更新作業で頑張らせたほうがいいらしい。
てかそもそも、業者じゃない個人運営のAPIを(例え個人的なソフトでも)使うのはなるべく避けたいなーとも思うので、できればrubyで一行展開してたような某記事のようなコードをさらっと書きたい。実際アクセスしてヘッダー見ればOKなだけだし。
idやタグをもっと見やすくしてもいいのかな?と思うので強調してみる。 jsのシームレスな動きと合わせられるともう少し使いやすくなるかな?と思う。
後、ほぼついでだったけどタグ検索も実装。こちらはリスト表示。