有没有办法不这样做: 将 javaScript 变量发送到 php 变量
或者我可以这样做,并将我的网址“掩盖”到原始网址,而不刷新页面(仍然保留 php 变量)?
有没有办法不这样做: 将 javaScript 变量发送到 php 变量
或者我可以这样做,并将我的网址“掩盖”到原始网址,而不刷新页面(仍然保留 php 变量)?
A nice and easy way to do this is like this:
PHP
<div id="something" data-info="<?php echo $info ?>"></div>
Jquery
var info = $("#something").data("info");
EXPLANATION
Put the variable as a data attribute in some div using PHP, and then grab the data attribute from the DOM using JQuery.
我相信你是不正确的——你实际上确实得到了 PHP 的 'javascript' 变量——使用@MikeD 下面的 jQuery 代码片段(jQuery 是一个 javascript 库,其中包含许多你可以在代码中使用的函数——使事情变得很少更容易做)上面你可以将 javascript 变量传递给 PHP 页面。
在 php 页面上,您可以使用如下简单的方法将此变量(源自客户端 - 浏览器)分配给 PHP 变量:
$variable = $_REQUEST['javascriptVariable'];
在将其放在您关心的任何地方之前,您可能希望围绕此代码进行大量安全性包装,但它说明了这些原则,而不会在水中添加太多泥浆:
<head>
<script>
function loadDiv(url)
{
$('#YourDivID').load(url);
}
</script>
<body>
<?php
$thisID = 1; //set here for demonstrative purposes. In the code this was stolen from, a MS SQL database provides the data
$thisGroup = "MyGroup";
$thisMembers = "TheMembers";
$thisName = "Just a example";
echo "<button onclick=loadDiv('http://siteonyourdomain.com/yourpage.php?ID=$thisID&group=$thisGroup&members=$thisMembers');>$thisName</button>";
//note this only works for sites on the same domain. You cannot load google.com into a div from yoursite.tv
//yourpage.php would have some code like this
// if(isset($_GET['thisID'])) {$myID = $_GET['thisID']} else {$myID = NULL}
?>
<div id="YourDivID">
Before
</div>
<?php
//I tested this code before posting, then replaced the domain and page name for security's sake
有两点可以使用 PHP 创建 javascript var,第一点是在服务器上创建“页面”时,第二点是在 javascript 应用程序运行期间(一旦加载页面)。第二点将需要某种客户端请求(ajax、websocket 等)。
最好的方法(根据我的经验)是使用 PHP 的 json 扩展,它允许您将 PHP 对象/数组编码为 json 序列化字符串,该字符串可以在浏览器中反序列化/解码为等效的 javascript 类型。
要在页面生成期间执行此操作,可以按以下类似方式完成:
echo "jsvar = eval('('+".json_encode($phpvar)."+')')";
请注意,评估发生在浏览器的客户端,并且在每个主要的 js 库中都很常见。
在您的 javascript 应用程序的正常操作期间请求对象将根据请求数据的方式而有所不同,但每种方式都将涉及异步 javascript 请求、处理请求的 PHP 脚本(在服务器端),然后是 javascript 端在 javascript 中接收到数据作为对请求的响应时调用的处理程序/回调。
我通常使用 PHP 将 json_encode() 的字符串作为纯文本回显,然后对 javascript 端响应回调进行编码以解码响应并触发事件。举一个基本的例子:
PHP端:
<?php echo json_encode($responce_object); // DONE ?>
javascript方面:
on_responce(responce)
{
var res_obj = eval('('+responce+')');
fire_event(res_obj);
}
上面的示例非常简单且通用,可以展示它的工作原理,但功能齐全的解决方案并不需要更多。特定解决方案的真正魔力将发生在“fire_event()”方法中——这是可以通过 jquery 或其他方式处理对象的地方。
如果您使用 $.ajax 提交到 php,则无需刷新页面。该页面上示例的代码如下所示
var javascriptVariable = "John";
$.ajax({
url: '/myphpfile.php',
type: "GET",
dataType: "json",
data: {
name: javascriptVariable,
},
success: function( data ) {
// do success function here
},
error:function( xhr, ajaxOptions, thrownError ) {
// handle errors here
}
}, "json");