Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97

Прием данных с контроллера в вид в Коделгнитер c аякс

17.05.2020, 20:32. Показов 1263. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Начал изучить технологию Ajax. Сломал голову, но никак код не хочет работать. Работаю в Codelgniter. В контроллере Green_paper:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public function input_robot_room(){
        $contact=$this->input->post('contact');
        
        if($this->ion_auth->logged_in()){
         $identity=$this->session->userdata('identity');
         $user=$this->ion_auth-> get_user_information($identity);
         $data=[             
                'name' => $user->first_name,
                'fake_coins'=> $user->fake_coins,
                'game'=> $user->count_game,
                'wins'=> $user->count_wins, 
                ];  
        }   else{
 
          $data=[
                'name' => 'Anonimus',
                'fake_coins'=> '500',
                'game'=> '0',
                'wins'=> '0', 
                 ]; 
 
        }
        echo json_encode($data);}
В скрипте вида:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//После запроса аякс заполняем данные игрока
function funcSuccess(){
data=JSON.parse(data);
for(var i in data){arr[i]=data[i];}
var playerName1=arr[1]; 
var playerMoney1= arr[2];
var playerGames1= arr[3]; 
var playerWins1= arr[4];  
 
}
//Делаем запрос Аякс для запроса данных игрока
$.ajax({
url: "/game/index.php/green paper/input_robot_room",
type: "POST",
data: ({contact: 1})
dataType: "html",
beforeSend: alert("Работаем!"),
success: funcSuccess
 
});
До того как попробовал сделать аякс все работало(данных с пхп конечно не было, но игра запускалась без данных игрока из бд, а стандартные данные), после того как приписал аякс, скропт не включается. Где я сдела не так?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2020, 20:32
Ответы с готовыми решениями:

Приём данных компьютером от контроллера, работа COM в Delphi
Здравствуйте. Тут встала у меня задача написать программу на Delphi для приема компьютером данных от контроллера otmyko48. В общем проект...

Модель MVC, передача данных из контроллера в вид?
как правильно организовать передачу данных из контроллера в вид? как-то у меня в голове не укладывается как это сделать, напр. есть: ...

Приём байтов с контроллера на ПК через MSCOMM
Добрый день. У меня возникла проблема с приемом байтов с контроллера pic16f877 по RS-232. Приём через mscomm vb 6.0. На пике написана...

9
189 / 125 / 60
Регистрация: 18.05.2014
Сообщений: 264
17.05.2020, 21:46
13 строка, неправильный адрес, 15 - данные.
Так же из приведенного кода не совсем понятно, по какому событию происходит обращение, и если php скрипт Index.php что то выводит (echo json_encode($data)), то где это прописано и куда девается это значение?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$(document).ready(function(){
        function funcSuccess(){
        data=JSON.parse(data);
        for(var i in data){arr[i]=data[i];}
        var playerName1=arr[1]; 
        var playerMoney1= arr[2];
        var playerGames1= arr[3]; 
        var playerWins1= arr[4]; 
 
//....$(".submit").click(function(){ кликаем на кнопку
        $.ajax({
            url: "game/index.php/green paper/input_robot_room",
            method: 'POST',         
            data: {
            contact: 1 },
            dataType: "html",
            beforeSend: alert("Работаем!"),
            success: funcSuccess
        });
//}); клик кнопки
});
Кликните здесь для просмотра всего текста

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
<script>
$.ajax({
//как то ,
//куда то,
//data: {что то},
//передаем
}).done(function(data){
$(".селектор").html(data);
});
</script>
//...
<div id="селектор"></div>
0
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
17.05.2020, 22:13  [ТС]
Вообще, первоначально мне нужно только принять данные с бд, чтобы вывести на экран пользовательские данные. То есть по сути ничего и не надо отправлять, но раз такая форма есть просто решил передать единичку чтобы было.
Насчет куда деваются данные, косяк свой увидел, в Аякс, в функцию успешного выполнения отправки нужно прописать данные приема с сервера. А данные мне должны передаться не с index.php, а с метода input_robot_room() контроллера green_paper.php. Обращение index.php/green paper/input_robot_room это стандартное обращение в codelgniter. Или нужно путь прописать как то по другому?
После исправления косяков скрипт все равно не идёт, и я думаю скорее всего что-то не так с url

Добавлено через 2 минуты
Выразился не совсем точно. В данном запросе мне не нужно ничего нажимать, мне не нужно нечего отправлять, мне нужно принять с бд(контроллер green_paper, метод input_robot_room здесь в пхп формируются из бд данные о пользователе) данные о пользователе

Добавлено через 35 секунд
Как загрузится страница нужно сразу принять данные с бд
0
189 / 125 / 60
Регистрация: 18.05.2014
Сообщений: 264
18.05.2020, 00:22
Ну понятно) значит запрос все же должен выполняться сразу после окончания загрузки страницы, $(document).ready.
Если green_paper - контроллер, в котором input_robot_room - метод, почему тогда не green_paper.php/input_robot_room?
Что в консоли?
0
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
18.05.2020, 15:53  [ТС]
Скрипт теперь выглядит так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$(document).ready(function(){
//Делаем запрос Аякс для запроса данных игрока
$.ajax({
url: 'game/index.php/green paper/input_robot_room',
type: 'POST',
data: {contact: 1},
dataType: 'html',
beforeSend: alert("Работаем!"),
success: funcSuccess
});
//Номер комнаты----
//После запроса аякс заполняем данные игрока
function funcSuccess(data){
data=JSON.parse(data);
for(var i in data){arr[i]=data[i];}
var playerName1=arr[0]; 
var playerMoney1= arr[1];
var playerGames1= arr[2]; 
var playerWins1= arr[3];  
 
}
В файле пхп все выглядит также:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public function input_robot_room(){
        $contact=$this->input->post('contact');
        
        if($this->ion_auth->logged_in()){
         $identity=$this->session->userdata('identity');
         $user=$this->ion_auth-> get_user_information($identity);
         $data=[             
                'name' => $user->first_name,
                'fake_coins'=> $user->fake_coins,
                'game'=> $user->count_game,
                'wins'=> $user->count_wins, 
                ];  
        }   else{
 
          $data=[
                'name' => 'Anonimus',
                'fake_coins'=> '500',
                'game'=> '0',
                'wins'=> '0', 
                 ]; 
 
        }
        echo json_encode($data);}
Если в саксес вписать алерт то выходят оба алерта, на текущую выходит один алерт, и на этом я так понимаю алерт заканчивает работу.
Ошибки в консоли следующие:
Миниатюры
Прием данных с контроллера в вид в Коделгнитер c аякс  
0
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
18.05.2020, 15:57  [ТС]
Качаемо пути. Игровая комната располатаеся по пути:
http://[::1]/game/index.php/green_paper/robot_room
Я использую codelgniter. Для codelgniter это стандартный url запись, где index.php - базовый пхп файл, green_paper - контроллер,robot_room - метод контроллера.
Пробовал задать url:game/green_paper.php/robot_room - разницы никакой, следовательно, все упирается в путь.
Может создать новый контроллер чисто для аякса? Хотя все также должно работать по идее
0
189 / 125 / 60
Регистрация: 18.05.2014
Сообщений: 264
18.05.2020, 16:20
Такой вариант не тоже не работает? с предварительным подключением base_url
JavaScript
1
url: '<?php echo base_url(); ?>game/index.php/green_paper/input_robot_room',
Контроллер green_paper в game находится?
0
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
18.05.2020, 18:16  [ТС]
Данный вариант не дает результатом, но срипт работает
Первоначально скрипт не работал из-за неправильно заданного массива
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(document).ready(function(){
//Делаем запрос Аякс для запроса данных игрока
$.ajax({
url: '/game/index.php/green_paper/input_robot_room',
type: 'POST',
data: {contact: 1},
dataType: 'html',
beforeSend: alert("Работаем!"),
success: funcSuccess
});
var arr = [];
//Номер комнаты----
//После запроса аякс заполняем данные игрока
function funcSuccess(data){
data=JSON.parse(data);
$('#playerName1').text("Имя: "+data);
for(var i in data){arr[i]=data[i];}
var playerName1=arr[0]; 
var playerMoney1=arr[1];
var playerGames1= arr[2]; 
var playerWins1= arr[3];  
 
}
Как правильно вывести массив
0
189 / 125 / 60
Регистрация: 18.05.2014
Сообщений: 264
18.05.2020, 18:51
Лучший ответ Сообщение было отмечено Dinar17 как решение

Решение

arr.push
JavaScript
1
2
3
4
5
6
7
8
9
function funcSuccess(data){
data=JSON.parse(data);
$('#playerName1').text("Имя: "+data);
for(var i in data){arr.push(data[i]);}
var playerName1=arr[0]; 
var playerMoney1=arr[1];
var playerGames1= arr[2]; 
var playerWins1= arr[3];  
}
1
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 97
18.05.2020, 22:01  [ТС]
Работает!
Надеюсь, последний вопрос по этой теме
Данные игрока поменялись
Но, при вызове функции
JavaScript
1
alert(playerName1);
Выходит в алерте следущее: object HTMLParagraphElement. Получается данные уничтожаются? Как их сохранить и передать в переменные?
При вызове функции
JavaScript
1
alert($("#playerMoney1").val());
выходит пустое значение

Добавлено через 37 минут
Немного поэксперементировав получил следующее:
Для того чтобы записать значение в какой либо объект
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function funcSuccess(data){
data=JSON.parse(data);
for(var i in data){arr.push(data[i]);}
var playerName1=arr[0]; 
$('#playerName1').text("Имя: "+playerName1);
//Вот здесь мы запоминаем данные
$("#playerMoney1").val(arr[0]);
var playerMoney1= arr[1];
$('#playerMoney1').text("Монет: "+playerMoney1);
var playerGames1= arr[2]; 
 $('#playerGames1').text("Игр: "+playerGames1);
var playerWins1= arr[3];  
$('#playerWins1').text("Побед: "+playerWins1);
}
alert($("#playerMoney1").val());
Но если сразу же выгружаем эти данные
JavaScript
1
alert($("#playerMoney1").val());
- выходит пустое значение, т.к. если я правильно понял данные функции funcSuccess выгружается после того как выполнится весь скрипт. А это значит, что нужно сделать какой ниюудь обработчик, например у меня есть кнопка старт
PHP
1
2
3
4
5
6
7
//Реакция на нажатие кнопки Старт
$('#Start').on('click', function(){
    alert(playerName1);
     if (zapret){
        change ();
        resultWindow (); 
}});
Наод сделать какое то событие после выполнение всего скрипта, чтобы не создавать доп кнопку для нажатия, а вот какое - что то пока в голову не приходит, что получилось нормально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2020, 22:01
Помогаю со студенческими работами здесь

Как передать множество переменных с контроллера в вид
Если передать так.то переменную id не хочет передавать return...

Аякс для уже загруженого через аякс контента?
Здравствуйте! Скажите пожалуйста - как можно сделать чтоб работал аякс для уже загруженного через аякс контента?

Аякс,передача данных
Здравствуйте.При выполнении запроса $('select').change(function() { var data = this.name + '=' + this.value; ...

Аякс и передача в него данных
Проблемка вот в чем, делаю страницу которая сначала загружает таблицу с моделью List&lt;BonusViewModel&gt; в которй есть наименование...

Передача данных аякс большого размера
Добрый день. Делаю аякс запрос. Нужно передать данные 10-20 кб. Передаю через переменную CheckText $('#myBtn').click(function(){ ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru