如果不这样做,有没有办法做到这一点: send javaScript variable to php variable
或者我可以这样做,并且“覆盖”我的网址到原始网址,而不刷新页面(仍保留php变量)?
答案 0 :(得分:0)
我相信你是不正确的 - 你实际上得到PHP的'javascript'变量 - 使用@MikeD下面的jQuery代码片段(jQuery是一个包含许多函数的javascript库,你可以在你的代码中使用它们 - 使事情变得更容易)上面你可以将javascript变量传递给PHP页面。
在php页面上,您可以使用以下简单的内容将此变量(源自客户端 - 浏览器)分配给PHP变量:
$variable = $_REQUEST['javascriptVariable'];
答案 1 :(得分:0)
这样做很简单:
PHP
<div id="something" data-info="<?php echo $info ?>"></div>
Jquery的
var info = $("#something").data("info");
说明
使用PHP将变量作为数据属性放在某个div中,然后使用JQuery从DOM中获取数据属性。
答案 2 :(得分:0)
你希望在把这个代码放在你关心的任何地方之前包含很多安全性,但它说明了这些原则而不会在水中加入过多的泥浆:
<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
答案 3 :(得分:0)
有两点可以使用PHP来创建javascript变量,第一点是在服务器上创建“页面”时,第二点是在javascript应用程序的操作期间(一旦加载页面)。第二点需要某种客户端请求(ajax,websocket等)。
最好的方法(根据我的经验)使用PHP的json扩展,它允许您将PHP对象/数组编码为json序列化字符串,该字符串可以在浏览器中反序列化/解码为等效的javascript类型。
在页面生成期间执行此操作可以按如下方式进行:
echo "jsvar = eval('('+".json_encode($phpvar)."+')')";
请注意,eval在浏览器的客户端发生,并且在每个主要的js库中都很常见。
在javascript应用程序的正常操作期间请求对象将根据请求数据的方式而有所不同,但每种方式都将涉及异步javascript请求,处理请求的PHP脚本(在服务器端),然后在javascript中接收数据作为对请求的响应时调用的javascript侧处理程序/回调。
我通常使用PHP将json_encode()'ed字符串作为纯文本进行回显,然后对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或其他任何方式处理对象的地方。
答案 4 :(得分:-1)
如果您使用$ .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");