Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Асинхронный AJAX проблема с выводом значений из БД / 9 сообщений из 9, страница 1 из 1
04.06.2013, 11:04
    #38284810
dakath
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
День добрый.

Есть простая тестовая таблица, в которой 3 поля, id, country и city_name.
Задача вывести все города которые == выбранной стране.
Написал следующий код:
Страница test.php

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
<html>
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js">  </script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

    <script type="text/javascript">
        $(document).ready(function(){
            $("#country").change(function(){
                 var country = $("#country").val();
                 $.ajax({
                    type:"GET",
                    url:"test.php",
                    data:"country="+country,
                    success: function(data) {
                      $("#city").html(data);
                    }
                 });
            });
       });
    </script>
 </head>
 <body>

    Страна :
    <select name="country" id="country">
      <option>-Страна-</option>
    <?php 
    include "bd.php"; 
    $result = mysql_query("SELECT DISTINCT country FROM test_sc ORDER BY `id` DESC");
    while($row = mysql_fetch_array($result)){

    echo "<option value=$row[country]>$row[country]</option>";

    } ?>
    </select>


    Город :
    <select name="city" id="city">
        <option>-Город-</option>
		<?php
include "bd.php";

$country = $_GET["country"];
$result = mysql_query("SELECT city_name FROM test_sc WHERE country='$country'");
   while($row = mysql_fetch_array($result)){
     echo"<option value=$row[city_name]>$row[city_name]</option>";

   }
?>
   </select>
  </body>
</html>



Проблема в том что после выбора страны, не отображаются города, хотя если смотреть в консоль firebug то response правильный.
Если в адресной строке явно указать страну(test.php?country=USA), то города выводятся.
Проблема воспроизводится только если передавать данные в эту же страницу, и нужна именно такая реализация.
Возможно ли решить эту проблему?

Буду благодарен за любую помощь, заранее спасибо.
Модератор: Что за закорючки в коде? Просьба представлять код, уже очищенный от серверного (скомпилированный). В противном случае будет переноситься в раздел ПэХаПэ или удаляться.
[IDV]
...
Рейтинг: 0 / 0
04.06.2013, 11:09
    #38284816
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
dakathхотя если смотреть в консоль firebug то response правильныйпокажите какой, например
...
Рейтинг: 0 / 0
04.06.2013, 13:12
    #38285084
dakath
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
Паганель,
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
GET test.php?country=USA 200 OK

Ответ, список городов возвращается, но на странице не выводятся.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js">  </script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

    <script type="text/javascript">
        $(document).ready(function(){
            $("#country").change(function(){
                 var country = $("#country").val();
                 $.ajax({
                    type:"GET",
                    url:"test.php",
                    data:"country="+country,
                    success: function(data) {
                      $("#city").html(data);
                    }
                 });
            });
       });
    </script>
 </head>
 <body>

    Страна :
    <select name="country" id="country">
      <option>-Страна-</option>
    <option value=Germany>Germany</option><option value=USA>USA</option>    </select>


    Город :
    <select name="city" id="city">
        <option>-Город-</option>
		<option value=Los Angeles>Los Angeles</option><option value=NY>NY</option><option value=Chicago>Chicago</option>   </select>
  </body>
</html>



Скрин: http://s019.radikal.ru/i603/1306/77/015b0de815cb.jpg

Модератор,
Если считаете что нужно перенести в раздел ПэХаПэ, то просьба перенести. Я специально написал такой код чтобы продемонстрировать ошибку, вдруг кто захочет у себя запустить.
...
Рейтинг: 0 / 0
04.06.2013, 13:16
    #38285098
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
сделайте так, чтобы при запросе городов возвращались города
а не вся страница
...
Рейтинг: 0 / 0
04.06.2013, 13:26
    #38285122
dakath
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
Паганель,
Не подскажите как это сделать в рамках одной страницы? Второй день уже гуглю, ответ так и не нашел.
...
Рейтинг: 0 / 0
04.06.2013, 13:45
    #38285152
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
dakathНе подскажите как это сделать в рамках одной страницы?Нет. Я с php не работал никогда
...
Рейтинг: 0 / 0
11.06.2013, 17:01
    #38294425
AcAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
Паганель, можно так попробовать, если нужно все в одном файле.
Лучше вынести код получения городов в отдельную функцию.


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
<?
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
?>
<html>
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js">  </script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

    <script type="text/javascript">
        $(document).ready(function(){
            $("#country").change(function(){
                 var country = $("#country").val();
                 $.ajax({
                    type:"GET",
                    url:"test.php",
                    data:"country="+country,
                    success: function(data) {
                      $("#city").html(data);
                    }
                 });
            });
       });
    </script>
</head>
<body>

    Страна :
    <select name="country" id="country">
      <option>-Страна-</option>
    <?php 
    include "bd.php"; 
    $result = mysql_query("SELECT DISTINCT country FROM test_sc ORDER BY `id` DESC");
    while($row = mysql_fetch_array($result)){
		echo "<option value=$row[country]>$row[country]</option>";
    } ?>
    </select>


    Город :
    <select name="city" id="city">
        <option>-Город-</option>
		<?php
include "bd.php";

$country = $_GET["country"];
$result = mysql_query("SELECT city_name FROM test_sc WHERE country='$country'");
   while($row = mysql_fetch_array($result)){
     echo "<option value=$row[city_name]>$row[city_name]</option>";
   }
?>
   </select>
  </body>
</html>
<?
} else {
include "bd.php";

$country = $_GET["country"];
$result = mysql_query("SELECT city_name FROM test_sc WHERE country='$country'");
   while($row = mysql_fetch_array($result)){
     echo "<option value=$row[city_name]>$row[city_name]</option>";
   }
}
?>


...
Рейтинг: 0 / 0
11.06.2013, 17:07
    #38294440
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
AcAlexПаганель, можно так попробовать, если нужно все в одном файлемне не нужно :)

неужели в этом пхп не принято параметры юзать. инъекции не страшны что ли
...
Рейтинг: 0 / 0
11.06.2013, 17:11
    #38294451
AcAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX проблема с выводом значений из БД
Паганель, прошу прощения - ошибся )
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Асинхронный AJAX проблема с выводом значений из БД / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]