私は、jQuery経由で私のWebサービスへのajax呼び出しを行うとてもシンプルなjavascriptクラスを持っています。データは正常に返されますが、変数を設定してデータを取得することができません。私は、すべてのAjaxイベントのイベントハンドラを設定しているため、非同期であるかどうかは、Ajax呼び出しの問題ではないと考えていますが、一部は起動しません。何が悪いのか分かりません。ここでは完全なコードは次のとおりです。jQueryに問題があります。Ajaxのタイミング
Javascriptを:
function testClass(){
this.returnData = "";
this.FireAjax = function(){
$.getJSON("http://localhost/mywebapp/webservices/service.asmx/Initialize?userID=12&jsoncallback=?",
function(data){
this.returnData = data.d;
alert(data.d);
}
);
}
}
HTMLページ:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="http://localhost/mywebapp/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="testClass.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var obj = new testClass();
$("#debug").ajaxError(function(event, request, settings){
$(this).append("<b>Ajax Error!</b><br />"); //this does not fire
});
$("#debug").ajaxSend(function(evt, request, settings){
$(this).append("<b>Ajax Send!</b><br />"); //this does not fire!?
});
$("#debug").ajaxStop(function(){
$(this).append("<b>Ajax Stopped</b><br />"); //this fires
});
$("#debug").ajaxComplete(function(event,request, settings){
$(this).append("<b>Ajax Completed!</b><br />"); //this fires
$(this).append("<h2>" + obj.returnData + "</h2>"); //this returns an empty string!!!!!!
});
$("#debug").ajaxSuccess(function(evt, request, settings){
$(this).append("<b>Ajax Successful!</b><br />"); //this fires
});
$("#debug").ajaxStart(function(){
$(this).append("<b>Ajax Started!</b><br />"); //this fires
});
obj.FireAjax();
});
</script>
</head>
<body>
<div id="debug">
</div>
</body>
</html>
追加情報: 私は私のhtmlページで完全なイベントを削除してに電話をかける場合obj.returnData私の停止イベント(おそらく私のHTMLの完全なイベントが私のtestClassの完全な関数を上書きすると思う)、私は同じ結果を得る。
"これは" testClass.jsで無名関数でに何を指すのでしょうか? –
"this"はオブジェクトのインスタンスを参照する必要があります...そうではないと思っていますか? –
なぜajaxSendが発射していないのか分かりません。それは謎です。 –