小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


jQuery.getについて聞かれたので調べてみました。

コメント欄でjQuery.getについて聞かれたので、ちょっと調べてみました。コメント欄だとコードとかが見にくいと思い、エントリにしてしまいました。
聞かれた質問は以下の通りです。

技術的にアドバイスいただければ有難いのですが、jqueryで、
jQuery.get(url,function (data) {
という形で処理しようとしているのですが、例示いただいている
var record = xmlHttp.responseText.split("\n");
の部分を、
var record = data.responseText.split("\n");
とすると、「data.responseText is undefined」となってしまいます。jQuery.getだと
戻り値がXMLHttpRequestオブジェクトとは違うのでしょうか?ちなみに、dataはXMLdocumentオブジェクトみたいです。

jQuery.getの結果と戻り値

jQuery.get(url,function (data) {と書いた場合、コールバック関数の引数dataにはリクエスト先URLの結果が文字列として格納されます。jQuery.getの戻り値はコメント欄にもあるとおりXMLHttpRequestですが、urlをGETした結果は文字列です。

data.responseText is undefinedとなる

上記のようにdataは文字列なので、responseTextというプロパティを持っていないため、undefinedとなります。
試しにjQuery.getの結果を変数に格納して、readyStateとstatusプロパティを参照してみたら、値がとれました。ただし、readyStateが1(ロード中)の場合は、ロードが完了していないのでresponseTextはundefinedとなります。

サンプルコード
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプル</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  var url = "hello.php";
  var result = jQuery.get(url, function (data) {
    alert(typeof(data));  // dataの型を表示する
  });
  alert(result.readyState);
  alert(result.status);
  alert(data.responseText);
});
</script>
</head>
<body>
<p>jQuery.getのサンプルページ</p>
</body>
</html>