Ошибка «Ожидается объект» при захвате события загрузки страницы - PullRequest
0 голосов
/ 16 января 2010

Следующий код внутри тегов выдает ошибку: «Ожидаемый объект».

    <!-- 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 Ответ

1 голос
/ 16 января 2010

Вы не можете назвать load() таким образом.

Первый параметр load принимает URL, а не функцию. Возможно, вы имели в виду это:

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

Предполагается, что MakeRequest возвращает отформатированный URL.

EDIT

.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);
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...