如何将数据从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 …