X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Не работает php код в javascript-е
Kuchuluk
Kuchuluk
Topic Starter сообщение 22.4.2013, 22:55; Ответить: Kuchuluk
Сообщение #1


нашел в интернете скрипт, написанный на js для вывода городов в зависимости от выбора страны. там массив из названий городов выводится, я вместо этого массива поставил вывод из БД своих городов. вот этот js код
Страна:
    <select name="street" onChange="MkHouseValues(this.selectedIndex)">
    <option value="Россия">Россия</option>
    <option value="Казахстан">Казахстан</option>
    </select>
    &nbsp;Город:
    <select name="house">
    <option value="N/A">N/A</option>
    </select>
    <script type="text/javascript">
<!--
// Формируем массив городов
var aHouseValues = new Array(
<?php echo $base->showCity(1); ?>,
<?php echo $base->showCity(2); ?>
);
// ф-ция, возвращающая массив городов по заданной стране
function getHouseValuesByStreet(index){
    var sHouseValues = aHouseValues[index];
    return sHouseValues.split(","); // преобразуем строку в массив городов
}
// ф-ция, выводящая динамически список городов
function MkHouseValues(index){
    var aCurrHouseValues = getHouseValuesByStreet(index);
    var nCurrHouseValuesCnt = aCurrHouseValues.length;
    var oHouseList = document.forms["address"].elements["house"];
    var oHouseListOptionsCnt = oHouseList.options.length;
    oHouseList.length = 0; // удаляем все элементы из списка городов
    for (i = 0; i < nCurrHouseValuesCnt; i++){
        // далее мы добавляем необходимые города в список
        if (document.createElement){
            var newHouseListOption = document.createElement("OPTION");
            newHouseListOption.text = aCurrHouseValues[i];
            newHouseListOption.value = aCurrHouseValues[i];
            // тут мы используем для добавления элемента либо метод IE, либо DOM
            (oHouseList.options.add) ? oHouseList.options.add(newHouseListOption) : oHouseList.add(newHouseListOption, null);
        }else{
            // для NN3.x-4.x
            oHouseList.options[i] = new Option(aCurrHouseValues[i], aCurrHouseValues[i], false, false);
        }
    }
}
// инициируем изменение элементов в списке городов, в зависимости от текущей страны
MkHouseValues(document.forms["address"].elements["street"].selectedIndex);
//-->
</script>

<?php echo $base->showCity(1); ?> <?php echo $base->showCity(2); ?> с помощью этих двух методов должен выводиться массив городов, но не выводится ничего, только N/A. сам метод такой
public function showCity($where) //ф.-ция когда нужно просто выбрать из базы и вывести на экран
{
  $data = $this->get("SELECT city_name FROM kz_city WHERE counry_id = ".$where);
  foreach($data as $d)
  {
   $text = $text.$d["city_name"].", ";
  }
  $a = strlen($text)-2;
  $text = substr($text,0,$a);
  //$text = preg_replace("#(,\s)+?$#","",$text);
  return $text;
}
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 22.4.2013, 23:18; Ответить: isvetlichniy
Сообщение #2


var aHouseValues = new Array(
<?php echo $base->showCity(1); ?>,
<?php echo $base->showCity(2); ?>
);

это глупости, echo выведет в браузер. попробуй вот так

var aHouseValues = new Array(
<?=$base->showCity(1); ?>,
<?=$base->showCity(2); ?>
);


и еще, я надеюсь ты создаешь объект класса base? а то я не вижу в коде.

Но я бы так не делал, я бы сделал заполнение списка с помощью jquery.ajax
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 23.4.2013, 10:45; Ответить: fedornabilkin
Сообщение #3


[member=isvetlichniy], не понял в чем разница между обычным и упрощенным выводом?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 23.4.2013, 11:13; Ответить: Kuchuluk
Сообщение #4


isvetlichniy, объект base есть. я ajax вообще не знаю, я js то толком не знаю
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 23.4.2013, 11:31; Ответить: fedornabilkin
Сообщение #5


[member=Kuchuluk], а стоило бы узнать и js, и ajax. и jQuery
Очень полезно и сразу отпадают подобные вопросы. Я так в данный момент боюсь смотреть на этот код и уверен, что все можно сделать намного проще.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 23.4.2013, 12:50; Ответить: Kuchuluk
Сообщение #6


это код не мой, я его в интернете нашел. он работал, когда там массив городов в ручную был написан, а с php кодом не работает
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 23.4.2013, 13:09; Ответить: fedornabilkin
Сообщение #7


Значит неправильно интегрировал пхп в этот скрипт.
ctrl+u смотрел что получается?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 23.4.2013, 14:09; Ответить: isvetlichniy
Сообщение #8


приведи исходный массив
я так предполагаю, что там он был строковой величиной

значит в кавычки твой php код надо брать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 23.4.2013, 16:25; Ответить: Kuchuluk
Сообщение #9


ctrl+u смотрел что получается?

посмотрел
<!--
// Формируем массив городов
var aHouseValues = new Array(
Курган, Омск,
Астана, Алматы, Актау, Актобе, Атырау, Караганда, Кзылорда, Кокшетау, Костанай, Петропавловск, Павлодар, Семипалатинск, Талдыкорган, Жезказган, Усть-Каменогорск, Тараз, Шимкент);
список городов в исходном коде получается

[member=isvetlichniy],
я так предполагаю, что там он был строковой величиной

ну да, он строковым был в изначальном коде
вот такой он был
<script type="text/javascript">
<!--
// Формируем массив городов
var aHouseValues = new Array(
"Москва, Питер, Самара, Бугуруслан",
"Лондон, Мантчестер",
"Рим, Турин",
"Париж",
"Киев, Семфирополь"
);
// ф-ция, возвращающая массив городов по заданной стране
function getHouseValuesByStreet(index){
    var sHouseValues = aHouseValues[index];
    return sHouseValues.split(","); // преобразуем строку в массив городов
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 23.4.2013, 16:58; Ответить: isvetlichniy
Сообщение #10


вот такой он был


ну так таким же и должен остаться
var aHouseValues = new Array(
"<?=$base->showCity(1); ?>",
"<?=$base->showCity(2); ?>"
);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Крауд-маркетинг который работает | Эффективные Ру-ссылки
1 Azyuka 959 13.2.2024, 19:36
автор: tascha56
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3293 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1171 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44767 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1856 26.5.2023, 20:48
автор: Mixatraider


 



RSS Текстовая версия Сейчас: 29.3.2024, 11:42
Дизайн