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 回答