Как передавать данные с Javascript на PHP и наоборот?
Как я могу передать Javascript script запрос страницы PHP и передать ему данные? Как я могу передать данные PHP скрипт обратно в Javascript script?
client.js:
data = {tohex: 4919, sum: [1, 3, 5]};
// how would this script pass data to server.php and access the response?
server.php:
$tohex = ... ; // How would this be set to data.tohex?
$sum = ...; // How would this be set to data.sum?
// How would this be sent to client.js?
array(base_convert($tohex, 16), array_sum($sum))
Ответы
Ответ 1
Передача данных из PHP проста, вы можете генерировать JavaScript с его помощью. Другой способ немного сложнее - вы должны вызывать PHP-скрипт с помощью запроса Javascript.
Пример (для простоты используется традиционная модель регистрации событий):
<!-- headers etc. omitted -->
<script>
function callPHP(params) {
var httpc = new XMLHttpRequest(); // simplified for clarity
var url = "get_data.php";
httpc.open("POST", url, true); // sending as POST
httpc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpc.setRequestHeader("Content-Length", params.length); // POST request MUST have a Content-Length header (as per HTTP/1.1)
httpc.onreadystatechange = function() { //Call a function when the state changes.
if(httpc.readyState == 4 && httpc.status == 200) { // complete and no errors
alert(httpc.responseText); // some processing here, or whatever you want to do with the response
}
};
httpc.send(params);
}
</script>
<a href="#" onclick="callPHP('lorem=ipsum&foo=bar')">call PHP script</a>
<!-- rest of document omitted -->
Что бы ни get_data.php
, он появится в httpc.responseText. Обработка ошибок, регистрация событий и кросс-браузерная совместимость XMLHttpRequest оставлены читателю в качестве простых упражнений;)
Ответ 2
Я столкнулся с подобной проблемой на днях. Скажем, я хочу передавать данные с клиентской стороны на сервер и записывать данные в файл журнала. Вот мое решение:
Мой простой клиентский код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<title>Test Page</title>
<script>
function passVal(){
var data = {
fn: "filename",
str: "this_is_a_dummy_test_string"
};
$.post("test.php", data);
}
passVal();
</script>
</head>
<body>
</body>
</html>
И php-код на стороне сервера:
<?php
$fn = $_POST['fn'];
$str = $_POST['str'];
$file = fopen("/opt/lampp/htdocs/passVal/".$fn.".record","w");
echo fwrite($file,$str);
fclose($file);
?>
Надеюсь, это сработает для вас и будущих читателей!
Ответ 3
Я бы использовал JSON как формат и Ajax (действительно XMLHttpRequest) в качестве механизма клиент-сервер.
Ответ 4
Я думаю, вы более или менее просто описали Ajax.
(извините за краткий ответ)
Ответ 5
Есть несколько способов, наиболее заметными из которых являются получение данных формы или получение строки запроса. Здесь один метод с использованием JavaScript. Когда вы нажмете на ссылку, он вызовет _vals ('mytarget', 'theval'), который будет отправлять данные формы. Когда ваша страница отправляется назад, вы можете проверить, были ли эти данные формы установлены, а затем извлечь их из значений формы.
<script language="javascript" type="text/javascript">
function _vals(target, value){
form1.all("target").value=target;
form1.all("value").value=value;
form1.submit();
}
</script>
В качестве альтернативы вы можете получить его через строку запроса. PHP имеет глобальные функции _GET и _SET для достижения этого, что значительно облегчает его работу.
Я уверен, что есть, вероятно, больше методов, которые лучше, но это всего лишь несколько, о чем spring.
РЕДАКТИРОВАТЬ: Основываясь на этом из того, что говорили другие, используя вышеупомянутый метод, у вас будет якорный тег, например
<a onclick="_vals('name', 'val')" href="#">My Link</a>
И затем в вашем PHP вы можете получить данные формы, используя
$val = $_POST['value'];
Поэтому, когда вы нажимаете на ссылку, которая использует JavaScript, она будет публиковать данные формы, а когда страница будет возвращена из этого клика, вы можете получить ее из PHP.
Ответ 6
Использование файлов cookie - это простой способ. Вы можете использовать jquery и pluging как jquery.cookie или создать свой собственный.
Использование Jquery + jquery.cookie, на примере
<script>
var php_value = '<?php echo $php_variable; ?>';
var infobar_active = $.cookie('php_value');
var infobar_alert = any_process(infobar_active);
//set a cookie to readit via php
$.cookie('infobar_alerta', infobar_alerta );
</script>
<?php
var js_value = code to read a cookie
?>
Я нашел эту полезную серверную и гибридную платформы:
http://www.phplivex.com/
http://www.ashleyit.com/rs/
Я использовал Ashley RSJS Script для обновления значений в HTML без каких-либо проблем в течение длительного времени, пока не встретил JQuery (ajax, load и т.д.)
Ответ 7
Вы можете передавать данные с PHP на javascript, но единственный способ получить данные из javascript на PHP - через AJAX.
Причиной этого является то, что вы можете создать допустимый javascript через PHP, но чтобы получить данные на PHP, вам нужно будет снова запустить PHP, а так как PHP работает только для обработки вывода, вам понадобится перезагрузка страницы или асинхронная запрос.
Ответ 8
Взгляните на эту тему:
Получение настроек cookie в разных доменах с помощью javascript или другого
Там я написал, как использовать ajax для чтения файла cookie из php файла...
Ответ 9
другим способом обмена данными с php на javascript или наоборот является использование файлов cookie, вы можете сохранять cookie файлы в php и читать ваш javascript, для этого вам не нужно использовать формы или ajax