未捕获的参考 - myFunction()未定义

时间:2015-11-23 00:52:28

标签: javascript jquery

我在这里阅读了大约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”。

6 个答案:

答案 0 :(得分:2)

脚本的jQuery部分包含语法错误,因此将丢弃整个脚本块(包括myFunction)。

修复语法错误。

&#13;
&#13;
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');
  }
});
**/
&#13;
<div>
  <br>
  <a href="javascript:void(0);" class="myButton" onclick="myFunction()">BOOM!</a>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

这绝对是与您正在放置代码的 相关的问题。在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'); });
}

答案 2 :(得分:1)

看起来您正在尝试将对象语法作为函数体,而不是对象内部。你可以做到

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()范围内声明它们并尝试在该范围之外访问它们

答案 3 :(得分:1)

你把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>

答案 4 :(得分:1)

我认为您的问题可能与脚本加载时的问题有关。所以它可能是未定义的,因为脚本尚未加载,但是文档可以解决这个问题并使用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选择器找到您的按钮。您的帖子请求也有问题,但我相信我也修复了这个问题。最后一个问题是,最初你的帖子请求不在你的函数内部所以它是单独运行而不是在你的变量被声明后立即运行

答案 5 :(得分:0)

可能是您的函数未在全局范围内定义,请尝试将其定义为窗口的属性:

window.myFunction = function(){ ... }