JavaScript не вызывается - PullRequest
       9

JavaScript не вызывается

1 голос
/ 20 ноября 2008

Я использую этот 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, у меня нет доступа, поэтому, пожалуйста, не отвечайте на это.

edit: проблема в том, что javascript вообще не вызывается. Я исправил проблему со знаком вопроса, но даже простой javascript с предупреждением не вызывается.

Ответы [ 10 ]

1 голос
/ 20 ноября 2008

используйте инструмент отладки 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;
}
1 голос
/ 20 ноября 2008

Я немного растерялся, когда помещал тег <script> в ничейную землю между головой и телом. Это имеет какое-то особое значение?

1 голос
/ 20 ноября 2008

Изменить это

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, вы должны удалить его.

1 голос
/ 20 ноября 2008
var url="get_employee.php?"

Нуждается в "?".

Лучше использовать эту разметку для включения ваших скриптов:

<script type="text/javascript" src="ajaxlib.js"></script>
0 голосов
/ 20 ноября 2008

Если вы не можете использовать правильный отладчик, вы можете добавить повсюду оповещения, чтобы увидеть, происходит ли что-то вообще (да, это плохое решение, но в любое время вы не используете хороший инструмент, который у вас есть) плохое решение).

Также убедитесь, что OnClick () возвращает false, чтобы браузер не мог перезагрузить страницу.

<a href="#" OnClick="GetEmployee()">link</a>

становится

<a href="#" OnClick="GetEmployee(); return false;">link</a>

0 голосов
/ 20 ноября 2008

Убедитесь, что вы не ошиблись или не назвали файл. Вы можете также изменить OnClick на все строчные буквы.

0 голосов
/ 20 ноября 2008

Вы можете использовать alert(url), чтобы проверить точный отправляемый URL.

0 голосов
/ 20 ноября 2008

Я не думаю, что это что-то глупое, как вопросительный знак "Missinq" в URL

var url="get_employee.php"
url=url+"cmd=GetEmployee"
url=url+"&sid="+Math.random()

Я бы ожидал увидеть "?cmd=GetEmployee"

0 голосов
/ 20 ноября 2008

Не должно ли быть знака вопроса или амперсанда между частями getcommand.php и cmd=?

0 голосов
/ 20 ноября 2008

var url = "get_employee.php" + "?"

(отвечая на комментарий)

Какая ошибка сообщается? Вам все еще нужно прикрепить функцию FetchComplete к свойству xmlHttp «onreadystatechange», но это не должно быть ошибкой, если вы не сделаете это.

Убедитесь, что ajaxlib.js действительно загружен и что вы имеете в виду файл. Поместите несколько предупреждений и посмотрите, всплывают ли они.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...