我有两个js文件,我想把两个变量从file1.js传递到file2.js。到目前为止,我所做的是用ajax将这两个变量在第三个文件file3.php中发送:
$('#replace').click(function(){
var replacement = cur;
var replacement2 = cur2;
$.ajax({
url: DOMAIN_NAME+"file3.php",
type: "post",
data: {replacement: replacement, replacement2 : replacement2},
success:function(data){
console.log(data);
},
error:function(){
alert('Something Went Wrong');
},
});
});
在我的文件3.php:中
if(isset($_POST['replacement']) && isset($_POST['replacement2']){
$a = $_POST['replacement'];
$b = $_POST['replacement2'];
}
<input type="hidden" id="af" value="<?=$a;?>">
<input type="hidden" id="bf" value="<?=$b;?>">
在我的File2.js:中
var a = $('#af').val();
var b = $('#bf').val();
我可以看到,在网络中,ajax传递了状态为200 OK的变量,但在php文件中,我的变量没有通过。所以file2.js无法获取值。我做错了什么??
假设您有一个简单的形式:
<form id="my_form">
<input type="text" name="a_field" id="a_field">
<input type="text" name="b_field" id="b_field">
<button id="submit_form">Submit</button>
</form>
这个表单的jquery脚本文件(#1)可以命名为"script1.js",看起来像这样:
$(document).ready(function(){
$('#submit_form').on('click').function(e){
e.preventDefault();
var formData = $('#my_form').serialize();
$.ajax({
type: 'POST',
url: 'my_ajax.php',
data: formData
});
});
});
请注意,我序列化了表单以便更快。。。(如果需要,可以指定要传递给ajax的变量)
以下是my_ajax.php的示例:
<?php
session_start();
if(isset($_SESSION["a_var"])){unset($_SESSION["a_var"]);}
if(isset($_SESSION["b_var"])){unset($_SESSION["b_var"]);}
if(isset($_POST["a_field"])){$a_field=htmlspecialchars($_POST["a_field"]);}else{$a_field=""; exit();}
if(isset($_POST["b_field"])){$b_field=htmlspecialchars($_POST["b_field"]);}else{$b_field=""; exit();}
$_SESSION["a_var"] = $a_field;
$_SESSION["b_var"] = $b_field;
?>
使用上面的文件,我们根据从html表单中获得的输入字段值创建了两个php会话
现在"棘手"的部分:
您的第二个js文件(#2)的扩展名必须是.php和NOT.js
然而,如果代码包含在"script"标签中,它将执行任何javascript代码
让我们将该文件命名为"script2.js.php"——它可以是这样的:
<?php
session_start();
if(isset($_SESSION["a_var"])){$value_a = $_SESSION["a_var"];}else{$value_a="";}
if(isset($_SESSION["b_var"])){$value_b = $_SESSION["b_var"];}else{$value_b="";}
?>
<script>/*...include jquery here (if necessary)...*/</script>
<script>
$(document).ready(function(){
//jquery is NOT necessary for my example
//I just included it in case you need to do other tasks...
var valueA = '<?php echo $value_a; ?>';
var valueB = '<?php echo $value_b; ?>';
//Now you can do anything with these values... For example, you could alert them:
alert('Value A: '+valueA+' - Value B: '+valueB);
});
</script>
最后一件事:
当你要在html页面中包含一个js文件时,你需要:
<script src="http://www.example.com/scripts/yourscript.js"></script>
要包含"js.php"文件,必须使用php"include"函数:
这就是我建议使用php会话将变量从一个js文件传递到另一个文件的方式!
我的示例非常"基本",可能需要在功能和安全性方面进行大量的"打磨"工作。。。但应该给你一个如何开始的想法。。。
希望这能帮助你和/或他人。。。