JS没有检测到函数?

时间:2016-02-25 10:16:06

标签: javascript php forms

所以我在index.php中有这个:

        <script type='text/javascript' src='images/submit.js'></script>

在我的文件中:

    $(document).ready(function() {
        function sendEmail() {
            console.log("function send email run");
                var url = "sendemail.php";

                $.ajax({
                   type: "POST",
                   url: url,
                   data: $("#emailform").serialize(),
                   success: function(data)
                   {
                       //alert(data);
                       document.getElementById("resultmsg").innerHTML = data;//$("#resultmsg").html(data);
                   }
                 });

            return false;
            }
});

我试图从(也是index.php)调用它:

<form name="emailform" action="" onsubmit="return sendEmail();" method="post">

但是我收到了这个错误:

TypeError: sendEmail is not a function

3 个答案:

答案 0 :(得分:0)

您是名为submit.js的Javascript文件,位于images forder吗? 您不需要在sendEmail函数中声明ready函数,因为它不会在传递给ready函数的匿名函数范围之外可用。只需要在ready函数中调用依赖于HTML元素的函数,或者在html代码之后包含这些函数。

答案 1 :(得分:0)

你必须在 $(document).ready(function()

之外编写 sendEmail()函数

使用当前代码,它仅在 $(文档).ready(function()函数

内可用

答案 2 :(得分:0)

通过以这种方式声明sendEmail作为全局变量:

$(document).ready(function() {
    sendEmail = function () {
        console.log("function send email run");
        var url = "sendemail.php";

        $.ajax({
            type: "POST",
            url: url,
            data: $("#emailform").serialize(),
            success: function(data)
               {
                   //alert(data);
                   document.getElementById("resultmsg").innerHTML = data;//$("#resultmsg").html(data);
               }
        });

        return false;
    }
});

或将sendEmail放在document.ready函数之外:

function sendEmail() {
    console.log("function send email run");
    var url = "sendemail.php";

    $.ajax({
        type: "POST",
        url: url,
        data: $("#emailform").serialize(),
        success: function(data)
           {
               //alert(data);
               document.getElementById("resultmsg").innerHTML = data;//$("#resultmsg").html(data);
            }
    });

    return false;
}