Я использую этот HTML
<html>
<head>
<Title>EBAY Search</title>
</head>
<script language = "JavaScript" src = "ajaxlib.js"></script>
<body>
Click here <a href = "#" OnClick = "GetEmployee()">link</a> to show content
<div id = "Result"><The result will be fetched here></div>
</body>
</html>
С этим Javascript
var xmlHttp
function GetEmployee()
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert("Your browser is not supported")
}
var url = "get_employee.php"
url=url+"cmd=GetEmployee"
url=url+"&sid = "+Math.random()
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function FetchComplete()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState= = "complete")
{
document.getElementById("Result").innerHTML=xmlHttp.responseText
}
if (xmlHttp.readyState==1 || xmlHttp.readyState= = "loading")
{
document.getElementById("Result").innerHTML = "loading"
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
try
{
xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Однако это не называется. get_employee.php отлично работает, когда я вызываю его отдельно, так что проблема не в этом. Что-то не так в моем коде, что мешает его вызову? Я не могу протестировать никакие расширения Firefox, у меня нет доступа, поэтому, пожалуйста, не давайте это в качестве ответа.
изменить: проблема в том, что javascript вообще не вызывается. Я исправил проблему со знаком вопроса, но даже простой javascript с предупреждением не вызывается.
@ Johsxtothe4 - последовательность. JavaScript должен быть JavaScript
Я не понимаю, что вызывает вызов FetchCommplete. Разве где-то там не должно быть груза? Кроме того, проверьте журналы сервера, чтобы узнать, загружаются ли когда-либо ajaxlib.js и get_employee.php.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


var url = "get_employee.php" + "?"
(отвечая на комментарий)
Сообщается об ошибке Какие? Вам по-прежнему необходимо присоединить функцию FetchComplete к свойству xmlHttp onreadystatechange, но если этого не сделать, это не должно быть ошибкой.
Убедитесь, что ajaxlib.js действительно загружен и это именно тот файл, который вы имеете в виду. Поставьте несколько предупреждений и посмотрите, всплывают ли они.
даже когда я ставлю вопросительный знак, он все равно не вызывается. Сообщается о проблеме в строке 7 html-файла, есть ли проблема с OnClick?
var url = "get_employee.php?"
Нужен знак "?".
Лучше использовать эту разметку для включения ваших скриптов:
<script type = "text/javascript" src = "ajaxlib.js"></script>
даже когда я добавляю вопросительный знак и меняю язык на тип, он все равно не будет вызван.
Разве между частями getcommand.php и cmd= не должно быть знака вопроса или амперсанда?
Я не думаю, что это что-то глупое, например, вопросительный знак в URL-адресе.
var url = "get_employee.php"
url=url+"cmd=GetEmployee"
url=url+"&sid = "+Math.random()
Я ожидал увидеть "?cmd=GetEmployee"
Вы можете использовать alert(url), чтобы проверить точный отправляемый URL.
Измените это
var url = "get_employee.php"
url=url+"cmd=GetEmployee"
url=url+"&sid = "+Math.random()
к этому:
var url = "get_employee.php?cmd=GetEmployee&sid = "+Math.random();
Вам не хватало "?" и нет необходимости во всей конкатенации (но я думаю, что это просто личный стиль).
Кроме того, если у вас действительно есть «<Результат будет получен здесь>» в вашем html, вы должны удалить его.
Убедитесь, что вы не неправильно разместили файл и не присвоили ему имя. Вы также можете изменить OnClick на все строчные буквы.
ajaxlib.js находится в том же каталоге, что и html-файл, и определенно имеет то же имя, что и вызванный из html-файла. переход на строчные буквы не помог.
Я предполагаю, что вы пробовали предупреждение («бла»); вверху файла? Если файл не запускается, возможно, это проблема с CHMOD. Примечание: добавьте return false; где предупреждение о том, что xmlhttprequest не поддерживается. Вам следует создать тщательную функцию getxmlhttprequest.
используйте инструмент отладки javascript, например firebug, это упростит вашу жизнь.
у вас была синтаксическая ошибка в коде, из-за которой "GetEmployee не определен"
это был упущенный «улов» после последней попытки в «GetXmlHttpObject ()». это та же функция после добавления недостающего «улова».
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
xmlHttp=new XMLHttpRequest();
}catch (e)
{
try
{
xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
return xmlHttp;
}
У меня нет доступа к firebug, но ваше исправление, похоже, работает, однако вместо ошибки теперь ничего не происходит .. php по какой-то причине не вызывается?
Я немного сбит с толку по поводу размещения тега <script> в нейтральной зоне между головой и телом. Имеет ли это какое-то особое значение?
Если вы не можете использовать правильный отладчик, вы можете добавлять операторы предупреждений повсюду, чтобы увидеть, происходит ли что-нибудь вообще (да, это плохое решение, но каждый раз, когда вы не используете хороший инструмент, у вас плохое решение. ).
Также убедитесь, что OnClick () возвращает false, чтобы браузер не перезагружал страницу.
<a href = "#" OnClick = "GetEmployee()">link</a>
становится
<a href = "#" OnClick = "GetEmployee(); return false;">link</a>
ken: Почему вы почувствовали необходимость редактировать?