プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
jQuery、$.ajax()で「No Transport」エラーになる場合の対処
結論から言えば、コードの最初の方に

jQuery.support.cors = true;

とか書けば大丈夫……だと思うんだけど、どうかなぁ。

「$.ajax()」を使って非同期通信で別のサイトと通信しようとしたのですが、
「No Transport」なるエラーが出てしまい上手く通信できなかったのです。
ってのが、調べたきっかけです。

ちなみに、いろいろ端折ってますが最初はこんな感じのコードを書きましたφ(--)

//対象URL
var url = "http://piyopiyocs.blog115.fc2.com/";

//非同期通信で取得
$.ajax({
    type: "GET",
    url: url,
    timeout: 10000,
    success: function(msg) {
        alert("success");
    },
    error:function(XMLHttpRequest, textStatus, errorThrown){
        alert(textStatus + ":" + errorThrown);
    }
});

ふつーですよね?

特別なことはしてないんだけどなぁ(--ゞと思いつつ調べたところ、
クロスドメインのうんちゃらかんちゃらが関係しているらしく、
jQuery1.5以上では

jQuery.support.cors = true;

と、どっかに書いておかないといけないらしい。
「cors」は「Cross-Origin Resource Sharing」の略ですってさ。
多分クロスドメイン周りの何かを有効にする指定なのでしょう。
他のドメインと通信したけりゃこのプロパティをtrueにしろってことですかね。

そして前述のコードを

jQuery.support.cors = true;

//対象URL
var url = "http://piyopiyocs.blog115.fc2.com/";

//非同期通信で取得
$.ajax({
    type: "GET",
    url: url,
    timeout: 10000,
    success: function(msg) {
        alert("success");
    },
    error:function(XMLHttpRequest, textStatus, errorThrown){
        alert(textStatus + ":" + errorThrown);
    }
});

に変更したところエラーは出なくなりました。
jQueryの非同期通信で「No Transport」エラーになる人は一度お試しあれ。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● JavaScript  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事