Javascript var url php

Получить переменную из PHP в JavaScript

Я хочу использовать переменную PHP в JavaScript. Как это возможно?

6 ответов

Вы можете напечатать переменную PHP в свой javascript во время создания вашей страницы.

  

Конечно, это для простых переменных, а не объектов.

Вы можете передать переменные PHP в свой JavaScript, сгенерировав его с помощью PHP:

Это зависит от того, какой тип переменной PHP вы хотите использовать в Javascript. Например, целые объекты PHP с методами класса нельзя использовать в Javascript. Однако вы можете использовать встроенные функции PHP JSON (JavaScript Object Notation) для преобразования простых переменных PHP в представления JSON. Для получения дополнительной информации, пожалуйста, прочитайте следующие ссылки:

Вы можете сгенерировать JSON-представление вашей переменной PHP, а затем распечатать его в коде Javascript при загрузке страницы. Например:

Я думаю, что самый простой способ — включить библиотеку jQuery javascript в ваши веб-страницы, а затем использовать JSON в качестве формата для передачи данных между ними.

На ваших HTML-страницах вы можете запрашивать данные из сценариев PHP следующим образом:

$.getJSON('http://foo/bar.php', , function(e) < alert('Result from PHP: ' + e.result); >); 

В bar.php вы можете сделать это:

$num1 = $_GET['num1']; $num2 = $_GET['num2']; echo json_encode(array("result" => $num1 * $num2)); 

Это то, что обычно называется AJAX, и это полезно для придания веб-страницам более динамичного и настольного ощущения (вам не нужно обновлять всю страницу, чтобы общаться с PHP).

Другие методы проще. Как уже предлагали другие, вы можете просто сгенерировать переменные данные из вашего PHP-скрипта:

$foo = 123; echo "\n"; 

Большинство веб-страниц в настоящее время используют комбинацию двух.

Это самый простой способ передачи переменной php в javascript без Ajax.

Вы также можете использовать что-то вроде этого:

Сказано, что это безопаснее или безопаснее. Я думаю

Обновление: я полностью переписал этот ответ. Старый код все еще там, внизу, но я не рекомендую его.

Есть два основных способа получить доступ GET переменные:

С помощью PHP вы можете просто создать «шаблон», который выглядит примерно так:

Тем не менее, я думаю, что смесь языков здесь небрежная, и ее следует по возможности избегать. В любом случае, я не могу придумать веских причин для смешивания данных между PHP и JavaScript.

Это действительно сводится к этому:

  • Если данные могут быть получены с помощью JavaScript, используйте JavaScript.
  • Если данные не могут быть получены с помощью JavaScript, используйте AJAX.
  • Если вам необходимо связаться с сервером, используйте AJAX.

Поскольку мы говорим о $_GET здесь (или, по крайней мере, я предположил, что мы были, когда я писал оригинальный ответ), вы должны получить его через JavaScript.

В первоначальном ответе у меня было два метода получения строки запроса, но она была слишком грязной и подверженной ошибкам. Это теперь внизу этого ответа.

В любом случае, я разработал симпатичный маленький «класс» для получения строки запроса (на самом деле это конструктор объекта, см. Соответствующий раздел в статье ООП MDN):

function QuerystringTable(_url)< // private var url = _url, table = <>; function buildTable() < getQuerystring().split('&').filter(validatePair).map(parsePair); >function parsePair(pair) < var splitPair = pair.split('='), key = decodeURIComponent(splitPair[0]), value = decodeURIComponent(splitPair[1]); tableJavascript var url php = value; >function validatePair(pair) < var splitPair = pair.split('='); return !!splitPair[0] && !!splitPair[1]; >function validateUrl()< if(typeof url !== "string")< throw "QuerystringTable() :: : expected string, got " + typeof url; > if(url == "")< throw "QuerystringTable() :: Empty string given for argument "; > > // public function getKeys() < return Object.keys(table); >function getQuerystring() < var string; validateUrl(); string = url.split('?')[1]; if(!string)< string = url; >return string; > function getValue(key) < var match = tableJavascript var url php || null; if(!match)< return "undefined"; >return match; > buildTable(); this.getKeys = getKeys; this.getQuerystring = getQuerystring; this.getValue = getValue; > 
function main() < var imaginaryUrl = "http://example.com/webapp/?search=how%20to%20use%20Google&the_answer=42", qs = new QuerystringTable(imaginaryUrl); urlbox.innerHTML = "url: " + imaginaryUrl; logButton( "qs.getKeys()", qs.getKeys() .map(arrowify) .join("\n") ); logButton( 'qs.getValue("search")', qs.getValue("search") .arrowify() ); logButton( 'qs.getValue("the_answer")', qs.getValue("the_answer") .arrowify() ); logButton( "qs.getQuerystring()", qs.getQuerystring() .arrowify() ); >function arrowify(str) < return " ->" + str; > String.prototype.arrowify = function() < return arrowify(this); >function log(msg) < txt.value += msg + '\n'; txt.scrollTop = txt.scrollHeight; >function logButton(name, output) < var el = document.createElement("button"); el.innerHTML = name; el.onclick = function()< log(name); log(output); log("- - - -"); >buttonContainer.appendChild(el); > function QuerystringTable(_url)< // private var url = _url, table = <>; function buildTable() < getQuerystring().split('&').filter(validatePair).map(parsePair); >function parsePair(pair) < var splitPair = pair.split('='), key = decodeURIComponent(splitPair[0]), value = decodeURIComponent(splitPair[1]); tableJavascript var url php = value; >function validatePair(pair) < var splitPair = pair.split('='); return !!splitPair[0] && !!splitPair[1]; >function validateUrl()< if(typeof url !== "string")< throw "QuerystringTable() :: : expected string, got " + typeof url; > if(url == "")< throw "QuerystringTable() :: Empty string given for argument "; > > // public function getKeys() < return Object.keys(table); >function getQuerystring() < var string; validateUrl(); string = url.split('?')[1]; if(!string)< string = url; >return string; > function getValue(key) < var match = tableJavascript var url php || null; if(!match)< return "undefined"; >return match; > buildTable(); this.getKeys = getKeys; this.getQuerystring = getQuerystring; this.getValue = getValue; > main();
#urlbox < width: 100%; padding: 5px; margin: 10px auto; font: 12px monospace; background: #fff; color: #000; >#txt < width: 100%; height: 200px; padding: 5px; margin: 10px auto; resize: none; border: none; background: #fff; color: #000; displaY:block; >button < padding: 5px; margin: 10px; width: 200px; background: #eee; color: #000; border:1px solid #ccc; display: block; >button:hover

Он гораздо более надежный, не использует регулярные выражения, объединяет лучшие части обоих предыдущих подходов и подтвердит ваш вклад. Вы можете дать ему строки запроса, отличные от той, что указана в URL, и он будет громко проваливаться, если вы введете неверный ввод. Более того, как хороший объект / модуль, он не знает и не заботится ни о чем, кроме определения класса, поэтому его можно использовать с чем угодно.

Конструктор автоматически заполняет свою внутреннюю таблицу и декодирует каждую строку так, что . foo%3F=bar%20baz&ampersand=this%20thing%3A%20%26 например, внутренне станет:

Вся работа сделана для вас при создании экземпляра.

var qst = new QuerystringTable(location.href); qst.getKeys() // returns an array of keys qst.getValue("foo") // returns the value of foo, or "undefined" if none. qst.getQuerystring() // returns the querystring 

Это гораздо лучше. А оставление URL-адреса на усмотрение программиста позволяет использовать его в не браузерной среде (протестировано на обоих node.js а также a browser ) и учитывает сценарий, в котором вы можете сравнить две разные строки запроса.

var qs1 = new QuerystringTable(/* url #1 */), qs2 = new QuerystringTable(/* url #2 */); if (qs1.getValue("vid") !== qs2.getValue("vid")) < // Do something >

Как я сказал выше, в этом ответе есть два грязных метода. Я держу их здесь, чтобы читателям не приходилось искать историю изменений, чтобы найти их. Вот они:

1) Direct parse by function , Это просто захватывает URL-адрес и анализирует его непосредственно с помощью RegEx.

Легко peasy, если строка запроса ?ducksays=quack&bearsays=growl , затем $_GET(‘ducksays’) должен вернуться quack а также $_GET(‘bearsays’) должен вернуться growl

Теперь вы, вероятно, сразу заметите, что синтаксис отличается от того, что он является функцией. Вместо $_GETJavascript var url php , это $_GET(key) , Ну, я думал об этом:)

Вот второй метод:

2) Object Build by Loop

onload=function()< $_GET=<>//the lack of 'var' makes this global str=location.search.split('&')//not '?', this will be dealt with later for(i in str) < REG=RegExp('([^?&#;]*)=([^?&#;]*)').exec(str[i]) $_GET[REG[1]]=REG[2] >> 

Вот! $_GET теперь является объектом, содержащим индекс каждого объекта в URL, так что теперь это возможно:

$_GET['ducksays']//returns 'quack' 

Это определенно невозможно с помощью функции.

Опять же, я не рекомендую этот старый код. Это плохо написано.

Источник

Как отправить переменную с js на php без перезагрузки страницы?

есть переменная a её нужно отравить в php код как это можно реализовать?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 html> head> title>/title> /head> body> script type="text/javascript"> var a=1; // переменная a которую нужно отправить на php без перезагрузки страницы /script>   ?> /body> /html>

Как без перезагрузки страницы отправить письмо
<form name="form-application" role="form" action="php/mail.php".

Как отправить запрос или форму без перезагрузки страницы
Есть меню(как на картинке). Как сделать так чтобы при нажатии на кнопку, отправился запрос по.

Отправить форму без перезагрузки страницы
Здравствуйте! Мне нужно отправить форму без перезагрузки страницы. Сижу дня 3, ничего не.

Как выполнить PHP код без перезагрузки страницы?
У меня имеется код: <?php if(isset($_POST)) < $text = $_POST; echo $text; >?> <form.

Лучше скажите полностью идею свою

Добавлено через 38 секунд
Может можно и без этого

Эксперт по компьютерным сетямЭксперт NIX

ЦитатаСообщение от Александрррррпд Посмотреть сообщение

Эксперт по компьютерным сетямЭксперт NIX

Лучший ответ

Сообщение было отмечено Александрррррпд как решение

Решение

Я сейчас точно не могу сказать, рядом нет компьютера, но можно по поему так

Лучший ответ

Сообщение было отмечено Александрррррпд как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
script type="text/javascript"> var name = 20; // вот эта переменная $.ajax({ type: "POST", // метод url: "data.php", // скрипт который получит отправление dataType: "json", // тип послания data: { // тут создаем json со значением которое нужно o: name }, success: function (data) { // необязательная функция, срабатывает при успехе alert('Success'); }, error: function () {// необязательная функция, срабатывает при неудаче alert('Error'); } }); script>
$data = $_POST['data']; $dt = json_decode($data);

Добавлено через 10 минут
В html нужно jquery подключить

script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">script>

Источник

Читайте также:  Css align buttons to right
Оцените статью