0

2つの機能に問題があります。が終了したchcekResultsときにのみ実行したい。callAPI

私のクリックイベント:

$("a#showA").click(function (e) {
    e.preventDefault();
    chceckResults(callAPI(apiKey));
});

および機能:

var Count = 0;
var ContractsArray = new Array();


function callAPI(yourAPIKey){
var enquiry = URL + yourAPIKey;
//alert(enquiry);
$.ajax({
 url: enquiry,
 type: 'GET',
 dataType: "jsonp",
 jsonp: "callback",
 jsonpCallback: "jsonpCallback2",
 complete: function (response, responseCode) {
 },
 success: function (json) {
     $.each(json.Contracts, function (index, contract) {
        // alert("Count before increament : " + Count);
        // alert(contract.ContractCode);
         ContractsArray[Count] = contract.ContractCode;

        // alert("Count after increament : " + Count);
        // alert("ContractsArray[Count]: " + ContractsArray[Count]);
         Count++;

        });
    }
 });
}

function chceckResults(){
alert("Count value in chceckResults : " + Count);
  for(var i = 0; i <= Count; i++){
    alert("ContractsArray[" + i + "]: " + ContractsArray[i]);
  }
}

が終了したchcekResultsときにのみ実行したい。callAPIどうやってやるの?

4

3 に答える 3

2

の成功ハンドラーchceckResults内から関数を呼び出すだけです。callAPI

success: function (json) {

    chceckResults();

    $.each(json.Contracts, function (index, contract) {
        ContractsArray[Count] = contract.ContractCode;
        Count++;
    });
}
于 2012-07-31T14:48:21.380 に答える
2

callAPI が終了した後に chcekResults を実行したい、いくつかの可能性があります。

callAPI は ajax 呼び出しを行っているため、achcekResults を ajax の成功コールバックに入れることができます。

そのような:

$.ajax({
  url: enquiry,
  type: 'GET',
  dataType: "jsonp",
  jsonp: "callback",
  jsonpCallback: "jsonpCallback2",
  complete: function (response, responseCode) {
  },
  success: function (json) {
  $.each(json.Contracts, function (index, contract) {
    // alert("Count before increament : " + Count);
    // alert(contract.ContractCode);
    ContractsArray[Count] = contract.ContractCode;

    // alert("Count after increament : " + Count);
    // alert("ContractsArray[Count]: " + ContractsArray[Count]);
    Count++;
   });
   // --------------------- Edit Begins -------------------------
   chcekResults(...);   // This is run after ajax response returns.
   // --------------------- Edit Ends -------------------------
  }
});

これは簡単な方法です。より一般的なものにしたい場合は、chcekResults をコールバックとして ajax に渡すことができます。このコールバックが定義されている場合は実行し、そうでない場合は無視します。このように、コールバックの有無にかかわらず、この ajax を使用できます。

于 2012-07-31T14:57:04.010 に答える
1

コールバックcheckResultを呼び出しますcallAPI successSuccess関数が戻ると呼び出されます。

于 2012-07-31T14:48:56.637 に答える