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

时间:2015-11-27 18:08:06

标签: php jquery ajax

我有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的变量,但在php文件中,我的变量没有通过。所以file2.js无法获取值。我做错了什么?

1 个答案:

答案 0 :(得分:0)

让我们说你有这个简单的形式:

<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)可以命名为&#34; script1.js&#34;并且看起来像那样:

$(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会话。

现在&#34;棘手&#34;部分:

你的SECOND js文件(#2)必须有一个扩展名.php而不是.js

然而,如果代码包含在&#34;脚本&#34;中,它将执行任何javascript代码。标签

让我们命名该文件&#34; script2.js.php&#34; - 可以是这样的:

<?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>

包括&#34; js.php&#34;文件你必须使用php&#34; include&#34;功能:

这就是我建议使用php会话将变量从一个js文件传递到另一个js文件的方法!

我的例子非常基本&#34;并且可以采取很多&#34;抛光&#34;关于功能和安全性的工作......但是应该让你知道如何开始......

希望能帮助你和/或其他人......

相关问题