【问题标题】:.val() not capturing the textbox value when button is clicked.val() 在单击按钮时未捕获文本框值
【发布时间】:2013-09-10 02:51:38
【问题描述】:

我正在尝试在文本框中输入一个值并让它触发对数据库的更新语句,但帖子 .val() 正在返回一个空白值。

函数如下:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
     function save_a9(id) {
        $.post('response6.php', {starID:id, starURL: $('#starurl').val()}, 
            function(result) { 
                alert(result); 
                window.location.reload();
        });
    }
</script>

这里是按钮和文本框:

    echo "<br><b>request to join site: {$row9['count']}</b><br>";
while ($row99 = $prep99->fetch(PDO::FETCH_ASSOC)) {
    echo "{$row99['starID']} , {$row99['starName']} = {$row99['twitter']}";
    if ($row99['guest'] == 0) {
        $guest = 'ongoing';
    };
    if ($row99['guest'] == 1) {
        $guest = 'guest';
    };
    if ($row99['guest'] == 2) {
        $guest = 'PLEASE SELECT ONE';
    };
    echo " ~ $guest ~ <br>";
    echo "<input type='text' name='starurl' value='{$row99['starURL']}' id='starurl' style='width:100px; height:30px;'/>";
    echo "<br><button onclick='save_a9({$row99['starID']})'>Approve</button><button onclick='save_d9({$row99['starID']})'>Disapprove</button><br>";
}

这里是 response6.php:

<?php
include("db_conn.php");
$sql = "update stars set approved = 1, starURL = ? where starID = ?";
$qc = $pdo_conn->prepare($sql);
$qc->execute(array($_POST['starURL'], $_POST['starID']));
echo 'saved';
?>

【问题讨论】:

  • 看起来您可能没有使用您希望的参数执行该函数。你有机会添加一个 jsfiddle 吗?
  • 页面上有多少个&lt;input&gt; 元素?如果您有多个 ID,则 ID 必须是唯一的。非唯一 ID 可能会导致此问题。
  • 在控制台运行$('[id="starurl"]').length看是否有重复的id
  • 我无法弄清楚如何让 jsfiddle 工作对不起。我只有 1 个输入,我如何使用它:$('[id="starurl"]').length
  • 我猜$('#starurl').val() 返回一个值,但不知何故您的服务器无法获取它。试试console.log($('#starurl').val());看看有没有值。

标签: php jquery ajax button sql-update


【解决方案1】:

我会改用属性 id。例如

<button id="button-id">Click me</button>

并在 jQuery 中使用它。 Example of Javascript.

【讨论】:

  • 好的,但它对我的项目有什么作用?它是否仍然能够使用文本框值更新数据库字段来完成我正在寻找的所有事情?
  • 对不起。我的错。我错过了获得#starurl 的价值。我看到它处于一个循环中,所以我认为它会生成多个#starurl。我发现 jQuery 将获得列表中的第一个输入。因此,如果您在第一个输入框以外的地方输入值,jQuery 将无法获取该值。 jsfiddle.net/JY36x/2
  • 这如何与 ajax 和更新查询一起工作?仍然不太了解它,我需要使用多个文本框,例如 starurl 和 starimage...
  • 你的目的是获取#starurl的值,对吧?您的 while 循环将生成对所有 使用相同 id 的 HTML,即 starurl。 HTML id 在每个页面上只能存在一次。如果它需要出现多次,请改用 class。我希望这个更新的示例有所帮助。 jsfiddle.net/JY36x/2
  • 看起来一样,放在上面的函数和response6代码中
猜你喜欢
  • 1970-01-01
  • 2013-04-16
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多