コメント欄で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>