Jquery php var to javascript

How to access PHP variables in JavaScript or jQuery rather than [duplicate]

I know I can store some variables in cookies, and access these values via cookies, but values in cookies are relatively stable values. Moreover, there is a limit, you can not store many values in cookies, and the method is not that convenient. Is there a better way to do it?

if you are going to mark things as ‘dups’ post links to those threads, otherwise its just postcount ++.

6 Answers 6

Your example shows the most simple way of passing PHP variables to JavaScript. You can also use json_encode for more complex things like arrays:

Other than that, if you really want to «interact» between PHP and JavaScript you should use Ajax.

Using cookies for this is a very unsafe and unreliable way, as they are stored clientside and therefore open for any manipulation or won’t even get accepted/saved. Don’t use them for this type of interaction. jQuery.ajax is a good start IMHO.

You have quotes round and I think that’s right. But you have quotes round as well, and I think that’s wrong — json_encode() returns valid javascript, so you don’t want to quote it, surely?

Читайте также:  METANIT.COM

There is no PHP/JavaScript interaction in just one file. For one file, there is only one-way PHP -> JavaScript.

If AJAX isn’t an option you can use nested data structures to simplify.

 'asd', 'asd' => array( 1 => 2, 3 => 4, ), 'zxc' => 0, ); ?>  

You’re asking kind of a two-part question. As far as syntax (I think since PHP4?) you can use:

. if PHP is configured to allow it. And it is on most servers.

As far as storing user data, you also have the option of storing it in the session:

for persistence from page to page. You could also of course use a database. You can even have PHP store the session variables in the db. It just depends on what you need.

As you say, this syntax is configured on most servers, but not all. For truly portable code, I’d still recommend using the full

@Karsten: I wasn’t suggesting that you do. I was just suggesting using session variables instead of cookies, when cookies aren’t necessary. You would still have to echo them inside your script, of course.

I ran into a similar issue when building a custom pagination for a site I am working on.

The global variable I created in functions.php was defined and set to 0. I could output this value in my javascript no problem using the method @Karsten outlined above. The issue was with updating the global variable that I initially set to 0 inside the PHP file.

Here is my workaround (hacky? I know!) but after struggling for an hour on a tight deadline the following works:

Inside archive-episodes.php:

  

Inside functions.php

max_num_pages; // In my testing scenario this number is 8. echo ''; ?> 

To keep it simple, I was outputting the totalPageCount variable in an $ajax.success callback via alert.

$.ajax(< url: ajaxurl, type: 'POST', data: , beforeSend: function() < $(".ajaxLoading").show(); >, success: function(data) < //alert("DONE LOADING EPISODES"); $(".ajaxLoading").hide(); var $container = $("#episode-container"); if(firstRun) < $container.prepend(data); initMasonry($container); ieMasonryFix(); initSearch(); >else < var $newItems = $(data); $container.append( $newItems ).isotope( 'appended', $newItems ); >firstRun = false; addHoverState(); smartResize(); alert(totalEpiPageCount); // THIS OUTPUTS THE CORRECT PAGE TOTAL > 

Be it as it may, I hope this helps others! If anyone has a «less-hacky» version or best-practise example I’m all ears.

Источник

Как передать переменную JavaScript в PHP и наоборот?

Как передать переменную JavaScript в PHP и наоборот?

На форумах очень часто можно встретить вопросы вроде:

Как передать переменную в JavaScript из PHP? или Как передать данные из PHP в JavaScript?

Эти вопросы выдают новичков и сейчас я постараюсь объяснить почему. А также ответить как же все-таки это сделать.

Почему вопрос о передаче переменной из языка в язык — вопрос новичка? Потому что невозможно это сделать! Языки программирования работают каждый самостоятельно. А передача напрямую между ними невозможна. Сейчас объясню почему.

Дело в том, что PHP и JavaScript связаны лишь условно. PHP работает на сервере, а JavaScript — в браузере.

Напомню алгоритм работы интернета. То есть, что происходит, когда вы запрашиваете адрес. Например, что должно произойти чтобы выполнилась JavaScript функция на странице http://dayte2.com.

  1. Браузер формирует заголовки запроса, присоединяет к в них какую-то важную информацию о себе и отсылает их на этот адрес.
  2. Сервер принимает заголовки и понимает что нужно отдать документ. Он понимает, что запрашивается не документ, а программа. Тогда он запускает эту программу и отдает ей все данные, что получил от браузера.
  3. Программа (php-скрипт) запускается, отрабатывает и просто печатает результат своей работы. Результатом работы может быть html-страница, куда включены JavaScript-скрипты. Но мы помним, что в данный момент работает PHP и JavaScript для него ничем не отличается от любых других данных. Просто буковки.
  4. Сервер получает то, что напечатала программа. Прикрепляет заголовки ответа и отсылает все это запросившему браузеру.
  5. Браузер получает код страницы и отображает его. Догружает нужные файлы (js, css, картинки), применяет их к html-коду. И только теперь включается JavaScript, встроенный в браузер.

Если посмотреть внимательно на этот порядок работы, можно ответить на вопрос

Как передать переменную из PHP в JavaScript?

Нужно во время выполнения скрипта PHP просто сформировать такой текст, чтобы он потом мог выполниться в браузере. Например.

Если вы создадите файл php с таким содержимым и запустите его из браузера — вы увидите пустую страницу и сообщение alert.

Разумеется, нужно помнить, что синтаксис должен быть JavaScript. Фактически, когда мы формируем код JS на PHP — мы должны помнить, что сначала php что-то сгенерирует и это что-то должно быть валидным JS.

В данном случае наш php-скрипт формирует строку:

А это — вполне корректный JavaScript, который будет выполнен браузером.

Как передать переменную из JavaScript в PHP?

Можно догадаться, тут дела обстоят труднее. Ведь php генерирует JS, а вот обратная связь не подразумевается особо. Так что хочешь-не хочешь, а придется формировать новый запрос к серверу, передавая в нем данные для скрипта. У нас есть два основных метода передачи данных. Реализация может быть как через синхронные, так и через асинхронные запросы. Синхронные вызовут перезагрузку страницы, а асинхронные используют Ajax.

Синхронный метод передачи данных в php из JavaScript

   

Этот код немедленно перенаправит пользователя по адресу http://dayte2.com/index.php?message=Hello%2C%20server!

PHP-код в файле index.php получит данные из GET и сформирует суперглобальные массивы.

Асинхронная передача переменной из JavaScript в PHP

Это подразумевает использование Ajax. По сути, осуществляется то же, что и в предыдущем случае, но не перезагружается страница браузера. Проще всего это проиллюстрировать используя библиотеку jQuery.

  

Как видим, все еще проще. Не нужно применять функцию encodeURIComponent, ее применяет за нас jQuery. Мы описываем функцию, которая принимает ответ сервера и складывает его в переменную data. Если index.php возвращает просто значение переменной $_GET[message], то мы увидим alert с текстом «Сервер ответил: Hello, server!».

Передача сложных объектов из php в Javascript

Мы помним, что при генерации JavaScript из php, нужно придерживаться синтаксиса JavaScript. Поэтому нужно перевести данные из представления PHP в представление JavaScript. Проще всего это сделать, воспользовавшись форматом JSON и функцией json_encode(), которая превратит объект или массив php в строку, которая при выполнении движком JavaScript, даст объект JavaScript.

'123','key'=>'value'); $js_obj = json_encode($arr); print ""; ?>

Тут можно начать путаться. Но ничего страшного нет. Достаточно помнить последовательность. Сперва выполняется php, затем — JavaScript. После выполнения php получится:

Что при выполнении выведет нам alert с текстом ‘123’.

Итого

Нужно помнить что php генерирует JS, поэтому передавать из него данные довольно просто. Нужно формировать JS так же, как формируется html. С соблюдением синтаксиса JavaScript.

Для передачи данных из JS в PHP всегда используется дополнительный запрос. Как он осуществляется — дело десятое. Например, может формироваться и отправляться форма. Или открываться iframe. Но суть остается. Понимая эту суть, можно перекидывать любые данные из браузера на сервер и обратно довольно просто.

Источник

Send PHP variable to JavaScript function [duplicate]

I have a php file that generates a variable and I would like the variable to be put into a JavaScript function which is called by onclick on the main page. Is this possible to send from PHP to JavaScript?

Does it need to be different after each click (e.g., a script that yields the current server-side time)? If so, you probably need Ajax.

6 Answers 6

  

Now it’s available as a JavaScript variable by the name of my_variable_name at any point below the above code.

In that case, this solution would break. If there’s a chance the string contains double quotes, you would have to encode the string in some way, for example using JSON as the accepted answer suggests.

Your JavaScript would have to be defined within a PHP-parsed file.

For example, in index.php you could place

If I understand you correctly, you should be able to do something along the lines of the following:

@username tbd Would I have to place the entire php file within the brackets? If not, how would I be able to specify which php file the variable is coming from?

A great option is to use jQuery/AJAX. Look at these examples and try them out on your server. In this example, in FILE1.php, note that it is passing a blank value. You can pass a value if you wish, which might look something like this (assuming javascript vars called username and password :

data: 'username='+username+'&password='+password, 

In the FILE2.php example, you would retrieve those values like this:

$uname = $_POST['username']; $pword = $_POST['password']; 

Then do your MySQL lookup and return the values thus:

This would deliver the message You are logged in to the success function in FILE1.php, and the message string would be stored in the variable called «data». Therefore, the alert(data); line in the success function would alert that message. Of course, you can echo anything that you like, even large amounts of HTML, such as entire table structures.

The approach is to create your form, and then use jQuery to detect the button press and submit the data to a secondary PHP file via AJAX. The above examples show how to do that.

The secondary PHP file receives the variables (if any are sent) and returns a response (whatever you choose to send). That response then appears in the Success: section of your AJAX call as «data» (in these examples).

The jQuery/AJAX code is javascript, so you have two options: you can place it within tags within your main PHP document, or you can at the bottom of your PHP document. If you are using jQuery, don’t forget to include the jQuery library as in the examples given.

In your case, it sounds like you can pretty much mirror the first example I suggested, sending no data and receiving the response in the AJAX success function. Whatever you need to do with that data, though, you must do inside the success function. Seems a bit weird at first, but it works.

Источник

Оцените статью