捕获页面加载事件时出现“对象预期”错误

时间:2010-01-16 06:34:39

标签: javascript jquery html ajax

标签内的以下代码给出了错误:“预期的对象”。

    <!-- JQuery/AJAX-->
    <script type="text/javascript">
        try {
            $(document).ready(function(){
                $("p").load(function(){
                    MakeRequest('divElectionCategory','ulElectionCategory','SELECT * FROM electioncategorymaster', 'UnOrderedList');
                });
            });
        }
        catch(e)
        {
            alert(e.message);
        }
    </script>

MakeRequest函数驻留在一个单独的.js文件中,我在上面给出的代码之前包含了该文件。

它指的是哪个对象?

编辑: MakeRequest函数

function MakeRequest(DivName, ControlName, SqlQuery, ControlType)
{
  var xmlHttp = getXMLHttp();
  var strUrl = "";

  if (ControlType = 'DropDown')
      strUrl = "../phplibraries/filldropdown.php?DivName=" + DivName + "&DropDownControlName=" + ControlName + "&SqlQuery=" + SqlQuery;
  else
      strUrl = "../phplibraries/createelectioncategorymenu.php?DivName=" + DivName + "&ulName=" + ControlName + "&SqlQuery=" + SqlQuery;

  alert(strUrl);
  try 
  {
    xmlHttp.onreadystatechange = function()
    {
        if (xmlHttp.readyState == 4) 
        {
            HandleResponse(xmlHttp.responseText, DivName);
        }
    }
            xmlHttp.open("GET", strUrl, true);
            xmlHttp.send(null);
    }
    catch(err)
    {
        alert(err);
    }
}

我知道上面存在一个很大的安全问题,但请暂时忽略它。

1 个答案:

答案 0 :(得分:1)

您无法以这种方式致电load()

load的第一个参数采用的是URL而不是函数。也许你的意思是:

$("p").load( MakeRequest('divElectionCategory','ulElectionCategory','SELECT * FROM electioncategorymaster', 'UnOrderedList') );

假设MakeRequest返回格式化的URL。

修改

.load()当用于DOM元素并且第一个参数是函数时,jQuery假定您附加了一个事件处理程序。但是,p没有加载事件。如果你想等待一切加载,试试这个(它不必在DOM准备好):

$(window).load( function(){
   MakeRequest('divElectionCategory','ulElectionCategory','SELECT * FROM electioncategorymaster', 'UnOrderedList')
});

MakeRequest重写

function MakeRequest(DivName, ControlName, SqlQuery, ControlType)
{
  var strUrl = "", params = {};

  if (ControlType = 'DropDown'){
    strUrl = "../phplibraries/filldropdown.php"; 
    params = {
      DivName: DivName,
      DropDownControlName: ControlName,
      SqlQuery: SqlQuery
    }
  } else {
    strUrl = "../phplibraries/createelectioncategorymenu.php";  
    params = {
      DivName: DivName,
      ulName: ControlName,
      SqlQuery: SqlQuery
    }
  }


  alert(strUrl);
  $.get(strUrl, params, function(data){
    HandleResponse(data, DivName);
  });
}