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

Передача глобальной переменной в функцию JS

31.07.2013, 12:16. Показов 2213. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Есть некоторый php скрипт содержащий:
PHP
1
2
3
4
5
global $_RESULT;
   $_RESULT=array(
       "str"=>$str,
   "list"=>$found,
   );
после выполнения которого вызывается функция JS:
JavaScript
1
2
function(result, errors){
                          }
Оправдано ли мое ожидание, что в result попадёт массив $_RESULT?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2013, 12:16
Ответы с готовыми решениями:

Передача глобальной переменной в форму
Добрый день. При открытии книги сохраняю в глобальную переменную адрес ячейки: Module: этаКнига Public cell as range Private sub...

Передача глобальной переменной из одной формы в другую
Первая форма private void button1_Click(object sender, EventArgs e) { string line; FileStream...

Изменение значения передаваемого параметра в функцию на уровне глобальной переменной
Как сделать, чтобы функция не возвращала значение, а изменяла передаваемый параметр и перезаписывала его? Например, есть значение a = 10,...

9
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
31.07.2013, 12:22
Цитата Сообщение от Sladko Посмотреть сообщение
Оправдано ли мое ожидание, что в result попадёт массив $_RESULT?
нет.
1
1 / 1 / 0
Регистрация: 01.11.2012
Сообщений: 33
31.07.2013, 15:33  [ТС]
Имеет ли значение тот факт, что функция
PHP
1
function(result, errors)
является параметром(принимающим результат и ошибку выполнения скрипта на сервере) метода JsHttpRequest.query, или же в любом случае такой способ передачи данных от сервера клиенту - ересь?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
31.07.2013, 15:35
php-код выполняется на сервере. После того, как страница отправлена клиенту, PHP уже мирно посапывает на печке
1
1 / 1 / 0
Регистрация: 01.11.2012
Сообщений: 33
31.07.2013, 15:49  [ТС]
Так оно да Я основываюсь на примере из книги PHP 5 в подлиннике, где рассматривается пример работы с AJAX при помощи библиотеки JsHttpRequest, написанной автором. Это мой первый опыт работы с AJAX. Задача - автоподсказка набора, данные берутся из текстового файла. Вот примеры скриптов:
Клиентская часть :
JavaScript
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
<script src="JsHttpRequest\lib\JsHttpRequest\JsHttpRequest.js"></script>
<script language="JavaScript">
    
    function fillList(st){
        document.getElementById("prov").innerHTML="";
        JsHttpRequest.query(
            'suggest_backend.php',
            {
                'str':st,
                'num':10
            },
            function(result, errors){
                document.getElementById("debug").innerHTML=errors;
                var list=document.getElementById("list");
                list.length=0;
                for(var i=0;i<result.list.length;i++){
                    list[i]=new Option(result.list[i]);
            }},
    
              false
      );
                
    }
</script>
<form>
    Введите первые буквы английского слова:<br>
    <div style="width:400px">
        <input
            type="text" name="text" style="width:100%"
            onkeyup="fillList(this.value);">
        <select id="list" size="8" style="width:100%" onclick="this.form.text.value=this.value;">
                    </select>
    </div>
</form>
<div id="debug"> Debug info </div>
Серверная часть:
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
<?php
require_once "JsHttpRequest\lib\JsHttpRequest\JsHttpRequest.php";
$JsHttpRequest=& new JsHttpRequest("windows-1251");
$str=$_REQUEST['str'];
$num=$_REQUEST['num'];
$textFile=file_get_contents('largetextfile.txt');
$words=preg_split('/[^\w+]/s',$textFile);
$words=array_unique($words);
 
$found=array();
foreach($words as $word){
   if(strlen($str) && 0 === stripos($word, $str)){
       
  $found[]=$word;
   } 
   if(count($found)>=$num) break;
   }
  
   global $_RESULT;
   $_RESULT=array(
       "str"=>$str,
   "list"=>$found,
   );
 print_r($_RESULT);
echo spintf("Произведена выборка %d из %d слов.", count($found), count($words));
?>
При наборе в поле ввода массив $_RESULT исправно высвечивается, то есть вся беда в передаче этого массива в параметр анонимной функции JS. В книге сказано: "Все, что вы присваиваете глобальной переменной $_RESULT в серверной части, попадает в параметр data анонимной функции onreadyfunc(result, errors) клиента".
0
42 / 42 / 4
Регистрация: 19.07.2013
Сообщений: 157
01.08.2013, 09:12
PHP
1
2
3
4
5
6
 global $_RESULT;
 
    $_RESULT=array(
       "str"=>'23',
       "list"=>'44',
    );
JavaScript
1
2
3
var RESULT=[];
        RESULT='<?php echo( json_encode($_RESULT) ) ?>';
        alert(RESULT);
1
1 / 1 / 0
Регистрация: 01.11.2012
Сообщений: 33
01.08.2013, 15:40  [ТС]
Безуспешно (
0
42 / 42 / 4
Регистрация: 19.07.2013
Сообщений: 157
01.08.2013, 17:39
Цитата Сообщение от Sladko Посмотреть сообщение
Безуспешно (
Что безуспешно??? я вам пример передачи массива показал, посмотрите что приходит от сервера, и юзайте jQuery, ajax там намного проще и понятливей использовать, поймете принцип передачи, можно двигаться дальше...
1
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
01.08.2013, 18:09
Цитата Сообщение от Sladko Посмотреть сообщение
require_once "JsHttpRequest\lib\JsHttpRequest\JsHttpR equest.php";
Котеров вас только запутает. Насколько я знаю, он делал все эти вещи для себя, зачем он только книгу стал писать, мне непонятно.
Запомните только то, что 80% книг по PHP -- это полная чушь. еще 15% -- авторы хотят донести что-то полезное, но у них не получается. Я не читал Котерова, но по его библиотекам у меня сложилось впечатление, что он не из тех 80%, однако, все эти якобы "упрощения" обмена данными между клиентской и серверной стороной сильно путают новичков. Очень сильно.
Поймите, что php -- это просто сформировать страницу. Вам знакомо макропроцессирование, например, такое как есть в си? Считайте, что php такой же макропроцессор для текста. Его цель -- просто взять, обработать какие-то данные, и потом отдать результат клиенту, и все. Никаких "обменов" между js и php непосредственно нет и быть не может. Это всего лишь языки программирования. Зато вы можете js-код на сервере обработать пхп-интерпретатором, и сформировать из него новый код. точно так же, как и хтмл.
Котеров вас запутал со своей библиотекой. никакого $_RESULT в php нет, это лично его изобретение.

Не по теме:

ПС. и да, я не могу вам посоветовать ни одной книги. Просто не встречался с ними, да и не интересовался, если честно. клиент-серверное программирование вообще сложно, а на php особенно. Оно было удобно, когда-то, но сейчас это больше похоже на хождение по минному полю, когда захочешь сделать действительно что-то интересное. Посмотрите лучше в сторону си -- он проще, и в то же время он почти ничем, по языку, не отличается от php. Когда поймете, как делать на си клиент и сервер, хотябы простой, тогда уже можно браться за php, понимая, что есть клиент (html,js, и обрабатывает эти вещи программа-браузер), и сервер(php, его интерпретатор, nginx, apache, многое другое). Тогда вам будет проще взять справочник функций, и применять пхп по его прямому назначению: бОльшая часть языка повязана на обработке строк, и делает это действительно очень быстро и удобно. А все остальное (ну или почти все) ложится на плечи программиста

1
1 / 1 / 0
Регистрация: 01.11.2012
Сообщений: 33
01.08.2013, 19:50  [ТС]
Что безуспешно??? я вам пример передачи массива показал, посмотрите что приходит от сервера, и юзайте jQuery, ajax там намного проще и понятливей использовать, поймете принцип передачи, можно двигаться дальше...
"Безуспешно" - ничего не приходит от сервера.

Добавлено через 23 минуты
Котеров вас только запутает
Да я всего лишь хотел сказать, что если есть пример - значит он должен работать. Мне как новичку показалось что раз есть библиотека, то на её плечи чудесным образом и должно ложиться передача данных.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.08.2013, 19:50
Помогаю со студенческими работами здесь

Как передать данные в функцию в другом *.cpp НЕ глобальной переменной и не аргументами?
Собственно, сабж. Объясню. Есть у меня прога со списком серверов типа &quot;сервер:порт&quot;. Выбирается один ЛЮБОЙ сервер, строчка парсится,...

Как в IDA PRO найти функцию, в которой глобальной переменной присваивается значение?
Разбираю DLL в IDA PRO. Нашел интересующую меня функцию в которой происходит сравнение некоторой глобальной переменной со значением. А...

Различие глобальной и глобальной статической переменной
у нас есть заголовочный файл со стражами, допустим global.h , его используют несколько других хейдеров и с++ файлов . когда там описаны...

Передача переменной в функцию
вызывается getBuy($ZAKAZ); В итоге исполнения скриптов получаю вот это wheresql 1=where id =&quot;11&quot; wheresql 2=11 ...

Передача переменной в функцию
Здравствуйте. Подскажите пожалуйста как сделать следующее: есть класс: #pragma once #include &quot;Point2d.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru