jQueryのAjax関数を使用してhttp送信する際にブラウザごとに挙動が異なるのでメモ。
Firefox基本的に適当に入れると動くのですが、ChromeとSafariがうんともすんとも言わない。
原因となったオプションはこれ。
async / boolean
非同期通信フラグ。初期値ではtrue(非同期通信)で、リクエストが投げられてから応答があるまで、ユーザエージェントは非同期に処理を続行します。falseに設定(同期通信)した場合、通信に応答があるまでブラウザはロックされ、操作を受け付けなくなることに注意してください。
とのこと。
非同期じゃうまくいかないってことなのでasyncのオプションをfalseにして同期通信にしてあげるだけ。
IEはasyncオプションを外してあげれば良い。
$.ajax({
type : 'post',
url : 'POST_URL',
data : data,
dataType : 'json',
scriptCharset: 'utf-8',
async: false,
success : function(data) {
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
}
});