未捕获引用-myFunction()未定义
Uncaught Reference - myFunction() is undefined
我在这里读了大约50个关于这个错误的主题,但看起来我没有找到解决问题的方法。
这是我正在使用的代码:
<script type="text/javascript">
var NAME,CATEGORY,NEED,PIMP;
function myFunction(){
NAME = document.getElementById("NAME").value;
CATEGORY = document.getElementById("CATEGORY").value;
NEED = document.getElementById("NEED").value;
PIMP = document.getElementById("PIMP").value;
alert();
}
(function() {
$.ajax({
type: "POST",
dataType: "json",
data: {name:NAME, category:CATEGORY, need:NEED, pimp:PIMP},
url: "send.php",
success: function(result) {
alert('Good job');
}
});
}
);
</script>
<div>
<br>
<a href="javascript:void(0);" class="myButton" onclick="myFunction()">BOOM!</a>
</div>
假设当我点击按钮时从多个表单中收集var,并通过邮件发送内容。。。但我在控制台中仍然有这个错误"myFunction is undefined"。
脚本的jQuery部分包含语法错误,因此整个脚本块(包括myFunction
)将被丢弃。
修复语法错误。
function myFunction() {
alert('call of myFunction')
var NAME = document.getElementById("NAME").value;
var CATEGORY = document.getElementById("CATEGORY").value;
var NEED = document.getElementById("NEED").value;
var PIMP = document.getElementById("PIMP").value;
}
/**
jQuery(function($) {
type: "POST",//<--syntax-error
dataType: "json",
data: {
name: NAME,
category: CATEGORY,
need: NEED,
pimp: PIMP
},
url: "send.php",
success: function(result) {
alert('Good job');
}
});
**/
<div>
<br>
<a href="javascript:void(0);" class="myButton" onclick="myFunction()">BOOM!</a>
</div>
这肯定是一个与有关的问题,您将代码放在哪里。我猜是在html的末尾,在html被渲染之后。
无论如何,如果您碰巧修复了代码仍然无法工作的问题,因为函数中的变量是本地的,在ajax调用中无法访问。
既然你在使用jQuery,我会这样做:
$('.myButton').on('click', function() {
var NAME = document.getElementById("NAME").value;
var CATEGORY = document.getElementById("CATEGORY").value;
var NEED = document.getElementById("NEED").value;
var PIMP = document.getElementById("PIMP").value;
$.post(your url, { name: name...}, function() { alert('Good job'); });
}
看起来您正试图将对象语法作为函数的主体,而不是对象内部。你可以做
var a = {
foo: "foo",
bar: "bar"
}
另一种选择是直接将其作为参数传递,正如我在下面所做的那样。
我相信你正在寻找的语法类似于
var NAME,CATEGORY,NEED,PIMP;
function myFunction(){
NAME = document.getElementById("NAME").value;
CATEGORY = document.getElementById("CATEGORY").value;
NEED = document.getElementById("NEED").value;
PIMP = document.getElementById("PIMP").value;
alert();
}
$(function() {
$.ajax({
type: "POST",
dataType: "json",
data: {name:NAME, category:CATEGORY, need:NEED, pimp:PIMP},
url: "send.php",
success: function(result) {
alert('Good job');
}
});
}
);
注意,我还将变量NAME、CATEGORY、NEED和PIMP设置为全局变量,因为您在myFunction()的范围内声明它们,并试图在该范围之外访问它们
myFunction放在哪里?如果你把这个函数放在DOMready函数中,那么把它去掉,立即放在script
中:
<script>
function myFunction() {
var NAME = document.getElementById("NAME").value;
var CATEGORY = document.getElementById("CATEGORY").value;
var NEED = document.getElementById("NEED").value;
var PIMP = document.getElementById("PIMP").value;
}
</script>
我认为您的问题可能是脚本加载时与元素加载时相比。因此,它可能是未定义的,因为脚本尚未加载,但文档已经加载。您可以使用jquery 修复此问题并简化代码
$(document).ready(function(){
$('.myButton').click(function() {
var NAME = $(".NAME").val();
var CATEGORY = $(".CATEGORY").val();
var NEED = $(".NEED").val();
var PIMP = $(".PIMP").val();
jQuery.post('send.php',{'name': NAME,'category': CATEGORY, 'need': NEED,'pimp': PIMP},function(result) {alert('Good job');},"json");
});
});
不管什么时候加载,这都应该有效。$(document).ready();
确保在调用函数之前加载文档,此时它应该能够根据css选择器找到您的按钮。你的帖子请求也有问题,但我相信我也解决了。最后一个问题是,最初您的post请求不在函数中,因此它是单独运行的,而不是在变量被声明为
可能是您的函数没有在全局范围内定义,请尝试将其定义为window:的属性
window.myFunction = function(){ ... }
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 引用错误:未定义 myfunction
- 未捕获的语法错误:意外的标记<和未捕获的引用错误:未定义 myFunction
- 未捕获引用-myFunction()未定义
- Am在chrome调试器中加载时收到错误myFunction未定义
- 未捕获的ReferenceError: MyFunction未定义
- 未捕获的ReferenceError: myFunction未定义