如何使用ajax jquery将一个变量从js文件传递到另一个文件


How can i pass a variable from js file to another using ajax jquery?

我有两个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文件传递到另一个文件的方式!

我的示例非常"基本",可能需要在功能和安全性方面进行大量的"打磨"工作。。。但应该给你一个如何开始的想法。。。

希望这能帮助你和/或他人。。。