leglog

雑記にも満たない

$.getJSON/$.ajaxが動かない

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なだけだし。