0

AJAX 応答が完了したときに関数をトリガーするにはどうすればよいですか?

ドロップダウンを変更すると、次のmanageImagesDynamicObjectDetails関数が呼び出されます。

<select id="imageComponentSelection" name="imageComponentSelection" onchange="manageImagesDynamicObjectDetails()">

この関数は、この AJAX 呼び出しに関連する変数を関数に渡しますmakeRequests

function manageImagesDynamicObjectDetails(){
  var sendContent = "selection=".concat(document.getElementById('imageComponentSelection').value);
  var fileName = "RetrieveObjectsInformation";
  var elementId = "objectData";
  if(sendContent != "Select a class to view components"){
  makeRequest(fileName,sendContent,elementId);
  } 
}

makeRequestすべての AJAX 呼び出しに対して呼び出され、それらを適切に処理する関数です。

function makeRequest(fileName,sendContent,elementId) {
 var xmlHttpRequest = getXMLHttpRequest();
 xmlHttpRequest.onreadystatechange = getReadyStateHandler(xmlHttpRequest,elementId);
 xmlHttpRequest.open("POST", fileName, true);
 xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 xmlHttpRequest.send(sendContent);
}

Speicif AJAX 呼び出しが完了したら、resizeObjectList 関数を呼び出したいと思います。

function resizeObjectList(){
  var windowHeight = $('#contentWrapper').height();
  var newObjectListHeight = windowHeight - 53 - 20 - 20 - 60;
  var element =  document.getElementById("componentObjectList");
  if (typeof(element) != 'undefined' && element != null){
    document.getElementById("componentObjectList").style.height = newObjectListHeight;
  }
}

どうすればいいですか?試してみましajaxCompleteajaxStopが、それらをトリガーすることができませんでした。

4

1 に答える 1

0

次のようなものが必要だと思います。

ただし、ajaxを非同期にすると、上記は機能します。読む: http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

jquery を使用すると、ajax がよりシンプルになります: http://api.jquery.com/jQuery.ajax/

以下に例を示します。

$.ajax({
  url: "http://fiddle.jshell.net/favicon.png",
  type: "GET"
  data: "key0=val0&key1-val1"
}).done(function( data ) {
  alert(data)
});
于 2013-02-10T16:08:07.540 に答える