【问题标题】:How can i pass a variable from js file to another using ajax jquery?如何使用ajax jquery将变量从js文件传递到另一个?
【发布时间】:2015-11-27 18:08:06
【问题描述】:

我有 2 个 js 文件,我想将 2 个变量从 file1.js 传递给 file2.js。到目前为止,我所做的是将这两个变量从 file1.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');
      },
    });
  });

在我的 file3.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 无法获取值。我做错了什么??

【问题讨论】:

标签: php jquery ajax


【解决方案1】:

假设你有这个简单的形式:

<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 而不是 .js

但是,如果该代码当然包含在“脚本”标签中,它将执行任何 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 文件传递​​到另一个文件的方式!

我的示例非常“基本”,可能需要在功能和安全性方面进行大量“打磨”工作......但应该让您了解如何开始......

希望对您和/或其他人有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多