提问人:Black Shark 提问时间:3/19/2022 最后编辑:Black Shark 更新时间:3/19/2022 访问量:71
为什么我的 .val() 返回 undefined,即使 id 是正确的并且脚本在正确的位置?
Why does my .val() return undefined even though id is correct and the script is in the right place?
问:
我正在尝试从生成的 HTML 中解析一些数据,这些数据显示数据库中的对象到 jquery。
以下是块内信息的生成方式:
<?php foreach ($items as $item): ?>
<div class="item-info-div" style="padding: 5px;">
//different fields output
<a><?= $item->dailyRate ?> per day</a><br>
//then I generate a unique id using field name + id
<input type='hidden' name='dailyRate' id='dailyRate<?=$item->id?>'
value='<?=$item->dailyRate?>'>
//then I have a button that should parse the data to jquery
<input type='submit' name='add_to_list' class='btn btn-warning my-2 add'
value='Add To list' id='<?=$item->id?>'>
</div>
然后,在我生成块的文件中,我将脚本放在结束正文标记的正文之前
<script type="text/javascript">
$(document).ready(function(){
$(document).on("click",".add",function(){
var id = $(this).attr("id");
var dailyRate = $("#dailyRate"+id+"").val();
console.log('I am the current value: ' + dailyRate);
});
});
</script>
问题是当我在浏览器中查看 HTML 源代码时,该字段的 value 和 id 都已正确生成。如果我在jquery(“#dailyRate”+id+“”)中执行相同的串联,它确实会产生与HTML源代码中的字符串相同的字符串。 var Id 被提醒就好了。为什么这个 .val 语句在 alerted/console.logged 时返回 undefined?我应该怎么做才能让它存储隐藏输入的值? 我尝试更改数据库中 dailyRate 的数据类型(假设它是 bigint),它仍然显示未定义。
UPD:我的错,问题出在数据上。在我的项目中,我们没有使用序列号,而是使用带有空格的生成 ID。由于它们,jquery无法正确指向地址(id)。多亏了 https://stackoverflow.com/users/4680889/hasan-%c4%b0slamo%c4%9elu 问题才得以解决。
我真正需要的解决方案:id='dailyRate<?=str_replace(' ','',$vehicle->regNum)?>'
答:
-2赞
Hasan İSLAMOĞLU
3/19/2022
#1
我写了你的代码,它工作得很好。您应该检查您的对象或 jquery 调用。您可以在下面找到工作示例。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<?php
$item = new StdClass();
$item->id = 1;
$item->dailyRate = 5;
$items = array($item);
?>
<?php foreach ($items as $item): ?>
<div class="item-info-div" style="padding: 5px;">
//different fields output
<a><?= $item->dailyRate ?> per day</a><br>
//then I generate a unique id using field name + id
<input type='hidden' name='dailyRate' id='dailyRate<?=$item->id?>'
value='<?=$item->dailyRate?>'>
//then I have a button that should parse the data to jquery
<input type='submit' name='add_to_list' class='btn btn-warning my-2 add'
value='Add To list' id='<?=$item->id?>'>
</div>
<?php endforeach ?>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).on("click",".add",function(){
var id = $(this).attr("id");
var dailyRate = $("#dailyRate"+id+"").val();
console.log('I am the current value: ' + dailyRate);
});
});
</script>
</body>
</html>
评论
0赞
Black Shark
3/19/2022
对不起,日志说有语法错误,我看不到代码是否有效。我已经重新创建了 HTML 文件,它说了相同的错误: { “message”: “Uncaught Error: Syntax error, unrecognized expression: #dailyRate<?=$item->id?>”, “filename”: “code.jquery.com/jquery-3.6.0.min.js”, “lineno”: 2, “colno”: 13633 }
0赞
Hasan İSLAMOĞLU
3/19/2022
您应该另存为 .php 文件。例如,“index.php”。只需复制我与您共享的代码并创建“index.php”文件并通过 php -S localhost:8080 提供服务,然后访问 localhost:8080 页面并单击按钮。您不能在 .html 文件中运行 PHP 代码。
0赞
Black Shark
3/19/2022
所以,我实际上认为这与正在输入的值有关。如果你尝试运行它,它会说undefined。我想这是因为输入 id 中的空格,您知道如何在解析数据时避免它吗?<input type='hidden' name='dailyRate' id='dailyRateLG01 VXT' value='235'> <input type='submit' name='add_to_list' class='btn btn-warning my-2 add' value='添加到列表' id='LG01 VXT'>
0赞
Hasan İSLAMOĞLU
3/19/2022
答案是肯定的。如果只有空间问题,请使用以下代码:id='dailyRate<?=str_replace(' ','',$item->id)?>' 和按钮 id='<?=str_replace(' ','',$item->id)?>'
0赞
ca1c
3/20/2022
@HasanİSLAMOĞLU 编辑答案 当您有问题的答案时,此答案是不够的。
评论