15 / 14 / 3
Регистрация: 23.09.2014
Сообщений: 251
1

Как передать параметр ajax?

24.09.2014, 00:27. Показов 3679. Ответов 6
Метки нет (Все метки)

В нете нашел пример ajax'а, не много переделав у меня получилось вот что:

Файл index.html
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script type="text/javascript">
$(document).ready(function($key) {
    $.ajax({
      type: "POST",
      data: "key",
      url: "/ajax/ajax.php",
      dataType: "json",
      success: function(data)
      {
        $("#p1").text(data);
        $("#p2").text(data);
      }
    });
});
</script>
</head>
<body>
    <x id="p1"></x>
    <x id="p2"></x>
    ...
</body>
Файл ajax.php -
PHP
1
2
3
4
5
6
7
8
9
10
11
<?
$key = "10001";
$m = file("/filetext");
for($i = 0; $i <> count($m); $i++)
{
    if (strpos($m[$i], $key) != null)
    {
        $data = json_encode(substr($m[$i], 8));
        echo $data;
    }
}
Файл filetext
x10000>>Текст 1
x10001>>Текст 2
x10002>>Текст 3
x10003>>Текст 4
x10004>>Текст 5
x10005>>Текст 6
x10006>>Текст 7
...
Смысл работы этого кода таков:

В файле filetext текст который подгружается ajax запросом на страницу в тег <x id="p1"></x>.
Все вроде работает, во всяком случае меня устраивает, но есть но!, таких параметров у меня 34, и это возможно только начало..
Необходимо передать каким-то образом в коде <x id="p1"></x> ключ той или иной строки, чтобы возвращался нужный текст.

Может я не правильно понимаю, быть может и не в теге <x id="p1"></x> необходимо это делать. Читая про ajax на jQuery, находил примеры передачи параметра по средствам кнопки (Button) и добавлением в "РОСТ" запрос строки data: "key",. Мучая эту тему пришел к выводу что кнопка в моем случае как третий тормоз в авто..

В конце так и не смог понять как передать ключ.
Помогите пожалуйста разобраться.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2014, 00:27
Ответы с готовыми решениями:

Как передать параметр в UI dialog?
$('#dialog').dialog({ modal: true, autoOpen: false, title: &quot;Сюда переменную&quot; });...

Как передать параметр через ссылку?
Здравствуйте. Подскажите как через ссылку передать параметр файлу contact.php, если js...

Как передать массив из php в ajax?
Перерыл все форумы, все говорят о передаче через JSON, но я понятия не имею как это работает. ...

Как правильно передать данные Ajax?
Всем привет, подскажите как передать данные!! есть ФОРМА &lt;form enctype=&quot;multipart/form-data&quot;...

6
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
24.09.2014, 08:41 2
Javascript
1
data: {key:13}
примерно так передаётся параметр. Т.е. в ajax.php можно сделать

PHP
1
$key = $_POST['key']
и в переменной key будет переданный параметр. И исходя из него уже выводить что нужно. МОжно и больше параметров, типа

Javascript
1
data: {age:13, name:'alex', sex:'male'}
0
15 / 14 / 3
Регистрация: 23.09.2014
Сообщений: 251
24.09.2014, 14:53  [ТС] 3
Так. Я в своем проекте делаю "язычность".
Данное время все работает, но по средствам перезагрузки страницы, что не есть гуд. Все 34 параметра (ну часть из них, не считая ошибок авторизации и т.п.) отображаются на странице.

Как это работает сейчас:
создал в отдельном скрипте функцию (ныне это ajax.php) обработки строк файла filetext;
заинклюдел его в начале странице, а на месте где надо написать то-или иное, стоял код вызывающий функцию "strlang("10003", $language)".

В соответствии с Вашей рекомендации, sMockingbird, мне придется создавать 34 параметра в java в переменной data:?

Или я не верно понял смысл ответа?

Можно ли сделать также как у меня было с функцией strlang? Там где необходимо, передаем параметр, скрипт возвращает нужное?
Что-то вроде - <x id="p1" value="10003"></x> - хотя так работать не хочет =(
0
15 / 14 / 3
Регистрация: 23.09.2014
Сообщений: 251
28.09.2014, 00:35  [ТС] 4
Ни у кого нет идей?
0
работяга
368 / 368 / 52
Регистрация: 23.05.2010
Сообщений: 947
28.09.2014, 09:39 5
Не вижу ничего страшного, если язык меняется с перезагрузкой страницы. Но если уж приспичило, то для начала с логикой работы определитесь.

1) Если меняется язык, лучше всё же сделать один запрос к файлу и получить разом все необходимые данные. Делать 50 запросов к файлу для каждой фразы - не надо.

2) Принцип работы ajax - сделал запрос к файлу, получил данные, дальше с этими данными надо что-то сделать. В вашем случае расставить фразы в соответствующие дивы. Так как фраз много, необходимо придумать, как сопоставлять фразу и див. Например, каждому диву с языковой фразой присваивать соответствующий класс
HTML5
1
2
3
4
<div class="x10000"></div>
<div class="x10001"></div>
<div class="x10002"></div>
...
3) Таким образом, мы приходим к тому, что нам надо в ajax.php сформировать такой массив, ключами которого будут коды фраз, а значениями - сами фразы.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$arFile = file('/filetext'); //файл в корне??
 
$arResult = array();
foreach($arFile as $line)
{
    $key = substr($line, 0, 6);
    $value = substr($line, 8);
 
    $arResult[ $key ] = $value;
}
 
echo json_encode($arResult);
?>
4) Когда щёлкаем по ссылке смены языка у нас должен запускаться ajax (я сделал по клику на любом месте страницы)
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(document).click(function() {
    $.ajax({
        type: 'POST',
        url: '/ajax/ajax.php',
        dataType: 'json',
        success: function(obj)
        {
            for(key in obj)
            {
                $('.' + key).text(obj[key]);
            }
        }
    });
});
Здесь идёт перебор полученного объекта и подстановка фраз в дивы, имеющие соответствующие классы.

5) Если для данной страницы требуются не все фразы, то стоит отправлять файлу ajax.php коды фраз, которые необходимо получить. В вашем случае как - надо это реализовывать?
0
15 / 14 / 3
Регистрация: 23.09.2014
Сообщений: 251
30.09.2014, 00:45  [ТС] 6
Во многом Вы etalord, правы. Но если перезагружать страницу теряется смысл в ajax, т.к. можно оставить функцию которая будет делать необходимы запросы и устанавливать их на нужное место. И в данном случае нет необходимости создавать массив данных в памяти и забывать код лишними скриптами.

Интересует различие скорости работы ajax и вызова функции в данной задачи - но это так, отходя от темы.

И еще вопрос, как вызвать ajax из выпадающего списка (select)?
0
работяга
368 / 368 / 52
Регистрация: 23.05.2010
Сообщений: 947
30.09.2014, 07:25 7
Вы хотите использовать ajax вместо функции получения языковых фраз? На мой взгляд, не очень удачная идея. Будет тратится время на запрос к другому файлу, а если сервер тормознёт, некоторое время будете видеть страницу вообще без текста. Как поисковые роботы будут индексировать такую страницу - тоже вопрос, возможно, они вообще текста не увидят. Ajax не для этого нужен. Не для формирования страницы, а для изменения данных на странице. Т.е. при загрузке станицы должна запускаться функция получения языковых фраз. А уже при выборе другого языка запускаем ajax.
Javascript
1
2
3
$('select').change(function() {
    // код
});
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2014, 07:25
Помогаю со студенческими работами здесь

Как передать результат запроса ajax в переменную javascript?
Есть функция, мне нужно получить значение переменной end в этой функции function(data) { ...

Как передать this в метод success объекта $.ajax - jQuery ?
Здравствуйте , помогите разобраться . Есть такой объект с помощью ajax запроса получает данные и...

Передать данные из формы, и внешнюю переменную, как? Ajax
Доброго времени суток. Вопрос может показаться легким) Есть функция //Функция для отправки...

Как передать значение оператора this в метод success объекта $.ajax
Здравствуйте друзья! Есть такая задача передать значение оператора this в метод success объекта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru