【问题标题】:display the value of a php session in a html input tag using javascript使用 javascript 在 html 输入标签中显示 php 会话的值
【发布时间】:2019-01-24 21:14:35
【问题描述】:

我在一个网站上工作,我不知道为什么我不能在 html 页面的输入标签中显示 php 会话的值。

这是我的 javascript 代码:

var qty = $.ajax({
    url: 'winkelwagen.php',
    data: {add: id, volume: "magnum"},
    type: 'get'
});

$['input[name="item-qty-' + id + '"]'].val = toString(qty);

以及它所指的php函数:

if(isset($_GET['add'])) {

    $query = query("SELECT * FROM products WHERE id = " . $_GET['add'] . " ");
    validate($query);

    while($row = mysqli_fetch_assoc($query)) { 

        if(isset($_GET['volume'])) {
            if($_GET['volume'] == "magnum") {
                if($row['category'] == 'Champagne') {
                    $_SESSION['product_' . $_GET['add'] . '_magnum'] += 1;
                } else {
                    $_SESSION['product_' . $_GET['add'] . '_magnum'] += 6;
                }
                return $_SESSION['product_' . $_GET['add'] . '_magnum'];
            } else {
                if($row['category'] == 'Champagne') {
                    $_SESSION['product_' . $_GET['add']] += 1;
                } else {
                    $_SESSION['product_' . $_GET['add']] += 6;
                }
                return $_SESSION['product_' . $_GET['add']];
            }
        }

    }

}

这是html代码:

<button class="cart-btn-remove" onclick="manageProducts('remove',0,{$id})"><ion-icon name="remove"></ion-icon></button>
<input type="text" name="item-qty-{$id}" value="{$amount}">
<button class="cart-btn-add" onclick="manageProducts('add',0,{$id})"><ion-icon name="add"></ion-icon></button>

(这来自一个用于打印购物车中商品的 php 循环)

我希望你能帮助我。

【问题讨论】:

  • 您在 Javascript 中缺少 data: 行的其余部分。
  • 我认为您还需要使用.val(toString(qty)) 而不是在jQuery中分配给它。

标签: javascript php ajax session


【解决方案1】:

$.ajax 不返回服务器响应。它是异步的,您需要使用回调函数来处理响应。

$.ajax({
    url: "winkelwagen.php",
    data: { add: id, volume: "magnum" },
    type: "get",
    success: function(qty) {
        $('input[name="item-qty-' + id + '"]').val(qty);
    }
});

【讨论】:

  • 在这种情况下,我仍然收到 JQuery 无法读取 undefined 的属性 'val' 的消息。
  • 抱歉,我复制了您对 .val 的使用,但没有注意到您的语法完全错误,我专注于 AJAX 调用。我已经更正了。
  • tnx 我现在知道它确实是错误的,所以我改变了它。现在我在输入中得到了一个新值,但我得到了整个 html 代码作为值而不是新数字
  • 这听起来像是 winkelwagen.php 的问题,它正在回显 HTML 代码,而不仅仅是会话变量的值。
  • 是的,这是正确的,但我不知道问题出在哪里,因为如果你直接从 php 回显值,你会得到正确的值
【解决方案2】:

你把括号括起来了吗?

数据:{添加:id,体积:“

哦,你可能应该逃避这些变量,这样人们就不会 do winkelwagen.php?add=;DROP DATABASE products;

哦,@Barmar 也说了...

【讨论】:

  • DROP DATABASE 不起作用,因为 sql 给出了语法错误
【解决方案3】:

ajax 不会自动存储/返回qty 变量中的响应,而是您必须附加一个callback 来处理它。 您必须执行以下操作才能获得所需的输出:

$.ajax({
      url: 'winkelwagen.php',
      data: {
        add: id,
        volume: "magnum",
        type: 'get'
      }).done(function(qty) {
      $['input[name="item-qty-' + id + '"]'].val(JSON.stringify(qty));
    }).fail(function() {
      alert("error");
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-25
    • 2016-04-11
    • 2011-03-16
    • 2014-10-20
    • 1970-01-01
    • 2015-06-27
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多