【问题标题】:I have passed an array in session variable. I need to pass key strokes to it to return values我在会话变量中传递了一个数组。我需要将击键传递给它以返回值
【发布时间】:2016-09-01 05:25:31
【问题描述】:

我已将 mysql 查询返回的数据存储到会话变量中。我可以使用$_SESSION['info'][][] 提取我想要的内容。

我希望能够动态地从数组中检索值。用户将从下拉列表中选择数字(其中 2 个)。其中一个数字需要传递给数组的第一个元素,显然,第二个数字传递给第二个元素。然后,结果会回显到屏幕上。

我需要在所有客户端执行此操作。像这样:

  • 获取按键 a 的结果
  • 将其存储为 $a
  • 获取按键 b 的结果
  • 将其存储为 $b
  • 将结果传递给echo $_SESSION['info'][$a][$b]

我可以得到一个击键并将其传递给一个变量,甚至可能是第二个,但我的知识有限,但将它们传递给会话变量并打印结果此刻让我无法理解。

enter code here$(document).ready(function() {
   $("#pcc").keyup(function() {
    var dInput = $(this).val();
    $n1=dInput;

    //$(".dDimension:contains('" + dInput + "')").css("display","block");
    });
});
$(document).ready(function() {
$("#pcp").keyup(function() {
    var dInput = $(this).val();
    $n2=dInput

    //$(".dDimension:contains('" + dInput + "')").css("display","block");
    });

});

我知道我可能会一次嵌套一个障碍。我知道这可以节省击键。我已经通过将值传递给警报对其进行了测试。

终于进步了。我正在使用此代码从输入字段中传递变量:

     $(document).ready(function(){

      $("#pcp").keyup(function(){
    var value = $("#pcp").val();
    n1= value;

      });
      $("#pcp").keyup(function(){
      var value = $("#pcc").val();
      n2= value;

     matrix('n1','n2');
    });

   });

而且我知道它会传递给 matrix(),因为我将变量从矩阵中转储到控制台,如下所示:

      function matrix(){
    // getting values from key presses

    //console.log(n1, n2);
     $.ajax({
    url: "matrix.php",
    method: 'GET',
    dataType: 'json',
    data: { a: n1, b: n2 },
    success: function(data) {

      var response = data.response;
}

     $_SESSION['arrayOfMatrix'][$a][$b]= response;

       });      

我也知道变量已通过,因为我在控制台中收到变量未定义错误,而现在我没有。所以有两件积极的事情。 然而,这似乎是能够做到的。我似乎没有得到任何回报。我曾尝试将console.log 放在matrix.php 中,但我也没有得到任何东西,所以我猜它只是没有触发并将数据发送到matrix.php。我可以做任何其他测试来看看它失败的地方吗?我觉得我快搞定了。

};

【问题讨论】:

  • 编辑你尝试过的代码

标签: javascript php arrays session


【解决方案1】:

您需要的是 AJAX。您需要创建一个 PHP 脚本,该脚本将通过 GETPOST 请求为 $a$b 获取两个值。然后,您可以使用 jQuery 的 $.ajax 异步调用该脚本并获取结果。

因此,首先您需要一个 PHP 脚本(为了本示例,我们将其称为:example.php)。

example.php 中你可以这样做:

<?php
session_start();
$a = $_GET['var_a'];
$b = $_GET['var_b'];
//do some checking of the two above variables here
$response = array(
    'response' => $_SESSION['info'][$a][$b];
);
echo json_encode($response);

如果您更喜欢使用POST 请求,可以用$_GET 替换$_POST

下一步涉及大量 JavaScript,因此,当您同时填充了 $n1 和 $n2 时,您可以使用 $.ajax 发送 POST 请求:

$.ajax({
    url: <path-to-example.php>,
    method: 'get',
    dataType: 'json'
    data: { var_a: $n1, var_b: $n2 }
}).done(function(data){
    var response = data.response;
    //$_SESSION['info'][$a][$b] is now in response
});

同样,如果出现POST 请求,您可以将'get' 替换为'post'

【讨论】:

  • 我在正确的轨道上吗?目前,我只是想捕获一个按键并将其传递。我只是想确保我实际上触发了 json 调用并得到了响应(目前我不在乎它是否是错误的响应(婴儿步骤))。因此,在我的小豌豆大脑中,这就是我所做的,在元素 id=pcp 中查找键向上或更改,将其值传递给 n1,然后因为 ajax 调用嵌套在键向上事件中,所以值被传递。嗯,这就是理论。有没有用。不!我不确定我是否得到了#pcp 的价值。
  • $("#pcp").on("keyup change",(function(){ var n1 =this.value; alert(n1); ); $.ajax({ url: , method: 'get', dataType: 'json' data: { a: n1 } }).done(function(data){ var response = data.response; //$_SESSION['info'][ $a][$b] 现在是响应 }); }
  • @AdrianFischer 您的 PHP 脚本中有什么?您也尝试过console.log(response); 来查看响应中的内容吗?
  • 这是我的 php 文件。我已经打印了响应并且它是空的。使用萤火虫我可以看到响应标头,因此它到达那里并返回,但它没有返回任何东西。我还可以看到 POST 设置了变量。它向我显示了参数和来源,它们匹配,所以我猜这是一件好事。所以我认为它一定是我的php脚本。 $_SESSION['arrayOfMatrix']['$a']['$b']); json_encode($response);
  • &lt;?php session_start(); $a = $_POST['var_a']; $b = $_POST['var_b']; $response = array('response' =&gt; $_SESSION['arrayOfMatrix']['$a']['$b']); json_encode($response);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多