Простая задача ajax / prototype - PullRequest
0 голосов
/ 12 сентября 2010

Я начинаю с Ajax, у меня проблема с включением файлов Ajax. Код Ajax, написанный на оригинальной странице (например, index.php) и помещенный в раздел (head), работает нормально, но когда я пытаюсь поместить код во внешний файл (в папку js , где находится файл prototype.js), я не получаю никакого ответа, даже в Firefox Error Console.

Я не изменил код Ajax, кроме URL для вызова функции PHP.

редактирование:

вызов ajax-файлов:

<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/myValidation.js"></script>
</head><body>
....
Username: <input type="text" name="uname" id='uname' /> 
<a href="JavaScript:Validate();"> Available?</a>
<span id="result"></span>
Email address: <input type="text" name="email" />
...

Я включил этот вызов функции в HTML. Функция проверки из книги "Интерфейсы приложений PHP и Script.aculo.us Web 2.0"

myValidation.js

function Validate(){
var user=$('uname');
var name="uname="+user.value;
var pars=name;
new Ajax.Request(
'myValidation.php',
{
method:'post', parameters:pars, asynchronous:true, onComplete: showAvailable
}
);
}

function showAvailable(originalRequest){
var newData=originalRequest.responseText;
$('result').innerHTML=newData;
}

Этот пример из упомянутой книги

Ответы [ 3 ]

1 голос
/ 12 сентября 2010

Вы не показали нам свой файл myValidation.js, но вот типичные причины, которые я вижу, когда люди переходят от встроенных блоков script к внешним файлам и все перестает работать:

  1. Они помещают script блоки во внешние файлы JavaScript.Вы вероятно не делали этого, но я видел это достаточно часто, чтобы упомянуть об этом.Ваш внешний сценарий - чистый JavaScript, поэтому, например, он должен быть:

    function Validate() {
        // ...
    }
    

    not:

    <script type='text/javascript'>
    function Validate() {
        // ...
    }
    </script>
    

    Я видел последнее довольно справедливо.

  2. Они помещают файл JavaScript в местоположение, которое не соответствует их тегу сценария src.

  3. Они оставили открытие <!-- или закрытие -->в сценарии.Важно этого не делать, во внешних файлах JavaScript это синтаксические ошибки.

  4. Они используют веб-сервер, чувствительный к регистру, и атрибут src и фактическое имя файла don 't match.

  5. Они используют веб-сервер, чувствительный к разрешениям, а файл не имеет необходимых разрешений.

ВВ случае с двумя последними, приведенными выше, это легко проверить: просто откройте новую вкладку и введите URL-адрес файла JavaScript.Если вы видите JavaScript, отлично;в противном случае у вас, вероятно, есть больше информации.

Для подобных проблем (и сотен других) нет ничего лучше, чем иметь приличный набор инструментов.Для отладки JavaScript в браузерах их достаточно много.Есть Firebug (надстройка Firefox), Инструменты разработки Chrome и Safari (встроенные в браузеры), Microsoft Visual Studio или Script Debugger для отладки с помощью IE и т. Д. Firebug и Dev Tools сообщат вам о неработающих src ссылках,а также любые исключения и т. д.

0 голосов
/ 12 сентября 2010

Проблема решена.

В папке / js / у меня был один файл php, который я поместил туда только из-за простоты. После перемещения его в другое место все заработало. Не знаю, является ли это правилом, нет файлов php в папке / js /. Спасибо T.J и Томаш

0 голосов
/ 12 сентября 2010

Проверяли ли вы, что эти файлы доступны из кода HTML? И еще - вы разместили свои скрипты внизу страницы - потому что AJAX будет связывать свои обработчики только с существующими элементами?

...