如何将数据从JavaScript传递到PHP,反之亦然?
我如何通过一个JavaScript脚本请求一个PHP页面并将数据传递给它? 那我如何让PHP脚本将数据传回给JavaScript脚本呢?
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))
从PHP传递数据非常简单,您可以使用它来生成JavaScript。 另一种方式有点难 – 你必须通过Javascript请求来调用PHP脚本。
一个例子(为简单起见,使用传统的事件注册模式):
<!-- 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中。 error handling,事件注册和跨浏览器XMLHttpRequest兼容性都是对读者的简单练习;)
我会使用JSON格式和Ajax(真正的XMLHttpRequest)作为客户端 – >服务器机制。
我前几天遇到类似的问题。 说,我想从客户端传输数据到服务器,并将数据写入日志文件。 这是我的解决scheme:
我简单的客户端代码:
<!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); ?>
希望这对你和未来的读者有用!
我想你或多或less只是描述了阿贾克斯 。
(对于简短的回复,抱歉)
有几种方法,最突出的是获取表单数据或获取查询string。 这里有一个使用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>
或者,您可以通过查询string来获取它。 PHP有_GET和_SET全局函数来实现这一点,这使得它更容易。
我相信可能有更多更好的方法,但这只是我们想到的一些方法。
编辑:build立在这个从别人已经说过使用上述方法,你会有一个锚点标签
<a onclick="_vals('name', 'val')" href="#">My Link</a>
然后在你的PHP中,你可以使用表单数据
$val = $_POST['value'];
所以当你点击使用JavaScript的链接时,它会发布表单数据,当页面从这个点击返回时,你可以从PHP中获取它。
使用cookie是一个简单的方法。 您可以使用jquery和一个plugin作为jquery.cookie或创build自己的。 通过例子使用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/
我一直使用阿什利的RSJS脚本来更新HTML中的值,而且没有任何问题,直到我遇到了JQuery(ajax,load等)
您可以将数据从PHP传递到JavaScript,但从JavaScript获取数据到PHP的唯一方法是通过AJAX。
原因是你可以通过PHP构build一个有效的javascript,但是要获取数据到PHP,你将需要重新运行PHP,由于PHP只是运行来处理输出,所以你需要一个页面重载或者一个asynchronous查询。
另一种方式来交换数据从PHP到JavaScript或反之亦然是通过使用cookie,您可以保存在PHP中的cookie和JavaScript读取,为此,你不必使用窗体或AJAX
看看这个主题: 使用javascript或其他方式在不同的域上设置cookie
在那里我写了如何使用Ajax从一个PHP文件中读取一个cookie …