Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用jQuery和Web服务发送电子邮件_C#_Jquery_Asp.net_Web Services - Fatal编程技术网

C# 使用jQuery和Web服务发送电子邮件

C# 使用jQuery和Web服务发送电子邮件,c#,jquery,asp.net,web-services,C#,Jquery,Asp.net,Web Services,我正在尝试将发送电子邮件功能添加到纯html站点。我在VS2017中创建了一个ASP.Net项目,并向其中添加了html文件。在有“联系我们”表单的页面上,我添加了jQuery以使用web服务发送电子邮件。我不断收到错误,不知道如何调试它。我分别在web服务中测试了该方法,它工作正常,它会发送电子邮件,这意味着我的jQuery中一定有错误。我需要这方面的帮助,看看是否有人能发现我遗漏了什么 当我运行它时,返回状态代码500 <section id="contact" class="bg-l

我正在尝试将发送电子邮件功能添加到纯html站点。我在VS2017中创建了一个ASP.Net项目,并向其中添加了html文件。在有“联系我们”表单的页面上,我添加了jQuery以使用web服务发送电子邮件。我不断收到错误,不知道如何调试它。我分别在web服务中测试了该方法,它工作正常,它会发送电子邮件,这意味着我的jQuery中一定有错误。我需要这方面的帮助,看看是否有人能发现我遗漏了什么

当我运行它时,返回状态代码500

<section id="contact" class="bg-light">
    <div class="container">
        <div class="row">
            <div class="col-sm-12 ml-sm-auto col-md-10 pt-4">
                <h1>Contact us</h1>

                <form id="sendmail" method="POST" action="">
                    <div class="form-group">
                        <input type="email" class="form-control" id="inputEmail" aria-describedby="emailHelp" placeholder="Email Address">
                    </div>
                    <div class="form-group">
                        <input type="email" class="form-control" id="inputName" aria-describedby="nameHelp" placeholder="First and Last Name">
                    </div>
                    <div class="form-group">
                        <input type="email" class="form-control" id="inputPhone" aria-describedby="phoneHelp" placeholder="Contact Number">
                    </div>
                    <div class="form-group">
                        <label for="inputMsg">Feedback/Questions</label>
                        <textarea class="form-control" id="inputMsg" rows="3"></textarea>
                    </div>
                    <button type="submit" id="btnSubmit" class="btn btn-primary">Submit</button>
                </form>
            </div>
        </div>
    </div>
</section>

<script type="text/javascript">
    $("#btnSubmit").click(function () {
        debugger
        $("#sendmail").validate();

        if ($("#sendmail").valid()) {
            $.ajax({
                type: "POST",
                url: "/services/easg.asmx/SendEmail",
                cache: false,
                contentType: "application/json; charset=utf-8",
                data: "{ 'Msg': '" + $("#inputMsg").val() + "', " + "'To': 'someone@somewhere.com'," + "'From': '" + $("#inputEmail").val() + "'," + "'Name': '" + $("#inputName").val() + "'," + "'Subject': 'Guide Feedback'," + "'Phone': '" + $("#inputPhone").val() + "'" + "}",
                dataType: "json",
                complete: function (transport) {
                    alert(transport.status);
                    if (transport.status == 200) {
                        alert('Your message was sent; thank you for your feedback');
                    }
                    else {
                        alert("Failed to send feedback; please try again later. Status Code: " + transport.status);
                    }
                }
            });
        }
        //so that the page doesn't post back
        return false;
    });
</script>

在项目的根目录下有一个“Services”文件夹,其中包含easg.asmx。

由于对上述问题的评论,经过一些调试后

RespnSext为“未知的web方法SendEmail。参数名称:methodName”

这意味着框架根本无法根据请求找到web方法。仔细看,web方法似乎仅限于获取请求:

[ScriptMethod(UseHttpGet = true)]
但是,您正在发出POST请求:

type: "POST",

你需要改变其中一个。这取决于您。

500错误意味着服务器出现故障。服务器的实际响应是什么?错误消息是什么?发送到服务器的数据有效负载的结果值是多少?它是有效的JSON吗?当您调试服务器端代码时,它具体在哪里失败?这就是问题所在,David,我在web服务的“SendEmal”方法中设置了一个断点,但没有找到它。jQuery代码不好,不能调用web服务,或者仅仅在web服务的方法中添加断点不足以在断点处停止。然而,当我把这个方法放在一个类中并用一些常量变量调用它时,它发送了电子邮件,所以我认为我的sendmail方法是可以的。在VS中调试时,如何检查服务器的实际响应?请检查浏览器的调试工具。在那里,您可以观察页面中涉及的HTTP请求/响应,包括AJAX调用。您需要查看服务器的实际响应是什么。我截获了“transport”变量,它的ResponseText为“Unknown web method SendEmail。参数名称:methodName”,然后它找不到要开始的web方法。
UseHttpGet=true
是否将该web方法限制为仅获取请求?因为你正在发送一个POST请求。
type: "POST",