1

SOFでこれに関する質問を見つけました..しかし、解決策が見つかりませんでした..

これは私のコードです..

 if (mefofftasksxmlhttp!=null)
        {
            mefofftasksxmlhttp.onreadystatechange=sasi_ready(taskId);
            mefofftasksxmlhttp.open("GET",url,true);
            mefofftasksxmlhttp.send(null);
        }

コールバック関数

function sasi_ready(tskId)
        {
            if (mefofftasksxmlhttp.readyState==4)
            {
               if (mefofftasksxmlhttp.status==200)
                {
                    alert('Task Moved to completed Tasks');
                    $('#'+tskId).hide();
                }
                else
                {
                    alert("Problem retrieving XML data");
                }
            }
        }

このコードは、コールバック関数でパラメーターを渡すときにコールバックを許可しません..しかし、パラメーターを削除すると..それは正常に動作します..

私はどこで間違ったのですか?

4

1 に答える 1

2

@ Beetroot-Beetrootがすでに言ったように、onreadystatechangeに関数参照を渡す必要があります。パラメータを渡したい場合でも、この関数が関数参照を返す限り、このパラメータを使用して関数を呼び出すことができます。

function sasi_ready(tskId) {
   return function() {
        if (mefofftasksxmlhttp.readyState==4)
        {
           if (mefofftasksxmlhttp.status==200)
            {
                alert('Task Moved to completed Tasks');
                $('#'+tskId).hide();
            }
            else
            {
                alert("Problem retrieving XML data");
            }
        }
   }
}
于 2013-03-19T09:57:33.763 に答える