Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Требования ajax к именам файлов
 
 автор: Владимир55   (02.11.2009 в 23:08)   письмо автору
 
 

Есть такой замечательный код, который прекрасно выполняет свои функции:
<?php
echo <<<TEXT
<div id="res"> </div>
<script src="jquery.min.js"></script>
<script>
function starter(file)
{
$.get(file+".php");
}
</script>
<input type="button" onclick="starter(31)" value="Пуск-1" />

<input type="button" onclick="starter(32)" value="Пуск-2" />

TEXT;
Этот код запускает скрипты в файлах с именами 31.рнр и 32.рнр.

А вот при попытке запустить файл с именем form-3a.php в браузере получаем сообщение об ошибке:

Сведения об ошибке на веб-странице

Сообщение: Предполагается наличие ')'
Строка: 17
Символ: 15


Строка 17 содержит
<input type="button" onclick="starter(form-3a)" value="Пуск-1" />


Куда здесь надо вставить скобку т зачем она - непонятно...

  Ответить  
 
 автор: АЯ   (03.11.2009 в 03:19)   письмо автору
 
   для: Владимир55   (02.11.2009 в 23:08)
 

Скобок не надо, кавычки нужны:
onclick="starter ('form-3a')"

И это не какое-то "специальное требование AJAX'a".
Это - вполне нормальное "требование Javasсript'a": всякая явная СТРОКА в JS-коде должна быть закавычена. Иначе браузер воспринимает написанное как имена переменных (объектов).

В вашем случае, из-за отсутствия кавычек и из-за наличия символа "минус" в передаваемой функции строке, таковых якобы "переменных" целых ДВЕ: браузер пытается составить арифметическое выражение, в котором участвует ранее неопределённая вами переменная с именем form, от которой надо "отнять" также ранее неопределенную переменную с именем 3a.

Ранее, когда вы передавали функции ЧИСЛА (31 или 32), то браузер обрабатывал их как числа (которые определены сами по себе), а потом, внутри функции при составлении имён файлов (31.php и 32.php) автоматически преобразовывал эти определённые числа в СТРОКИ. Это для браузера просто, понятно и естественно.

Контрольныe примеры для усвоения пройденного:
1. <script>alert (123);</script> //работает без проблем

2. <script>var w = 12; var q = 10; alert (w-q);</script> //также работает без проблем

3. <script>alert ('w-q');</script> //и это работает

4. <script>alert (w-q);</script> //а это - НЕ РАБОТАЕТ, переменные с именами w и q не определены.

  Ответить  
 
 автор: Владимир55   (03.11.2009 в 12:54)   письмо автору
 
   для: АЯ   (03.11.2009 в 03:19)
 

Очень интересное и понятное разъяснение, весьма поучительные примеры - я всё это опробовал.

В моей пока небольшой коллекции скриптов нашлось несколько, содержащих в себе те же ошибки, которые на основании Вашего совета удалось исправить.

Большое спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования