【发布时间】:2018-08-11 00:21:12
【问题描述】:
我正在尝试调用无法识别的函数。我有一个 PHP 代码块,可以在用户登录时将表单添加到 HTML:
<?php
if(isset($_SESSION['user'])) {
$usr = $_SESSION['user'];
echo("<form onsubmit=\"nbpost('#nbpost','$usr'); return false;\">\n");
echo("<textarea id='nbpost' placeholder='Create a post...'></textarea>\n");
echo("<button type='submit'>SUBMIT</button>\n");
echo("</form>\n");
}
?>
我把我的 JavaScript 放在那个 HTML 下面。根据 W3Schools 的说法,该脚本与它的执行方式无关。另外,我试过无数次在脚本置顶时执行脚本,也没有结果。
另外,我之前将代码放在单独的脚本中,但我已经把它拿出来看看是否是问题所在。
这是带有生成 HTML 示例的脚本:
<form onsubmit="nbpost('#nbpost','$usr'); return false;">
<textarea id='nbpost' placeholder='Create a post...'></textarea>
<button type='submit'>SUBMIT</button>
</form>
<script type="text/javascript">
const nbpost = function(element, name) {
alert("WORKING");
name[0] = name[0].toUpperCase();
const msg = $(element).val;
console.log(name, msg);
$.ajax({
url: "http://rmpc/php/nbpost.php",
method: "POST",
data: {
name: name,
notice: msg
}
});
};
</script>
每当我执行代码时,它只会在控制台中显示:
Uncaught TypeError: nbpost is not a function at HTMLFormElement.onsubmit (index.php:54)
怎么了?
【问题讨论】:
-
这可能是处理范围的问题,即使用
const nbpost = function与function nbpost。有一个很棒的 SO Answer 解释范围问题,但我会尝试将您的函数声明为function nbpost(element,name){}看看会发生什么。 -
我之前尝试过函数 nbpost,所以很遗憾这不是问题
-
表单提交了吗?
-
@nicolascolman 确实如此
标签: javascript html