【问题标题】:To fetch value of particular textbox获取特定文本框的值
【发布时间】:2016-02-29 07:45:08
【问题描述】:

在这里,我使用会话来存储多个文本框值。 但是当我要从会话中获取时,我会为会话中的所有文本框获得相同的值。

我的代码:

if ($order_list) {
     $i = $start +1; 
     foreach ($order_list as $row) 
     {
?>
<input type="text" name="<?php echo $row['id']; ?>" class="txt" autocomplete="off" id="txtid_<?php echo $row['id']; ?>" value="<?php if(isset($_SESSION['txtval'])) { echo $_SESSION['txtval'];} ?>">
<?php } ?>

在javascript中:

$(document).on('blur','.txt',function(){
    var myVar = $(this).val();

    //alert(myVar);
    $.ajax({
            type: "GET",
            url: "view_orders_checked_array.php",
            data: {account: myVar, task: 'alltxt'},
            async: false
        });
 });

在 view_orders_checked_array.php 中:

$task = $_GET['task'];
    if($task == "alltxt")
    {

        $_SESSION['txtval'] = $account;
    }

在这里,我没有得到特定文本框的值。我得到了我上次插入的值。 我哪里出错了?

【问题讨论】:

  • 问题解决了吗?
  • 感谢您的提问,但我遇到了问题...@Zeeshan
  • 检查我下面的答案。

标签: php ajax session textbox


【解决方案1】:

检查下面的工作代码,如果您只是通过 txtval 传递 id 并为每个 id keyvalue 创建会话 。现在,当您打印会话数组时,您将获得会话数组中的所有键值。难懂请追问。

Javascript

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<?php
session_start();
$_SESSION['txtval'] = '';
$order_list[0] = array('id'=>'1');
$order_list[1] = array('id'=>'2');
$order_list[2] = array('id'=>'3');
$order_list[3] = array('id'=>'4');

$start = '';
if ($order_list) {
    $i = $start + 1;
    foreach ($order_list as $row) {
        ?>
        <input type="text" name="<?php echo $row['id']; ?>" class="txt" autocomplete="off"
               id="txtid_<?php echo $row['id']; ?>" value="<?php if (isset($_SESSION['txtval'])) {
            echo $_SESSION['txtval'];
        } ?>">
    <?php }
}?>

<script type="text/javascript">
    $(document).on('blur','.txt',function(){
        var myVar = $(this).val();
        var myVarid = this.id;
        $.ajax({
                type: "GET",
                url: "view_orders_checked_array.php",
                data: {account: myVar, task: 'alltxt', id: myVarid },
                async: false,
                success:function(data){
                    console.log(data);
                }
            });
     });
</script>

PHP 文件 view_orders_checked_array.php

<?php
session_start();
$task = $_GET['task'];
if ($task == "alltxt") {

    $_SESSION['txtval'][$_REQUEST['id']] = $_REQUEST['account'];
}
echo '<pre>';print_r($_SESSION['txtval'] );echo '</pre>';
die('Call');

【讨论】:

    【解决方案2】:

    您还必须在会话中维护数组,以便您可以在 id 的帮助下进行操作

     var id=your loop id;
     data: {account: myVar, task: 'alltxt',id:id },
    

    在您的 view_orders_checked_array 页面中

    $task = $_GET['task'];
    $id=$_GET['id'];
    if($task == "alltxt")
    {
    
        $_SESSION['txtval'][$id] = $account;
    }
    

    在你的代码中

     <input type="text" name="<?php echo $row['id']; ?>" class="txt" autocomplete="off" id="txtid_<?php echo $row['id']; ?>" value="<?php if(isset($_SESSION['txtval'])) { echo $_SESSION['txtval'][$row['id']];} ?>">
    

    我建议你使用POST 方法来传递值

    【讨论】:

    • 你得到的答案是只给出文本框值的第一个字符。所以,这是不可能的。
    • 文本框值的第一个字符????你打印了会话值,即完整的会话数组???
    • 你得到了什么???您必须通过 id 来唯一地存储每个 textarea 值,您可以通过多种方式做到这一点......
    【解决方案3】:

    问题是您在所有文本字段中输入相同的值

    $_SESSION['txtval'] 
    

    在你的循环中总是一样的。

    编辑

    而且我认为您获得了相同的最后插入值,因为将所有文本字段存储在数组 $_SESSION['txtval']['another_id_key'] 中,您将其存储在 $_SESSION['txtval'] 中,这只是一个值

    【讨论】:

    • 那我该怎么办?
    • 将值存储到数组中,以便您更轻松地获取更多值。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多