我正在使用ajax来调用服务器端函数。由于某种原因,成功是成功的,但没有达到功能
这是JavaScript

<script type="text/javascript">

$(document).ready(function () {
    $.ajax({
        url: "Server.aspx/sendEmail",
        data: { name: "foo", company: "bar", country: "foo", email: "bar", msg: "bla" },
        async: false,

        success: function (data) {
            var a = 3;
        },
        error: function (a, b) {
            alert("error");
            var a = 43;

        }
    });
});




这是C#

[WebMethod]
public static string sendEmail(string name, string company, string country, string email, string msg)
{
    //somecode here
}


数据消息(由于某种原因而中断)


<form method="post" action="./sendEmail?%7b%22name%22%3a%22foo%22%2c%22company%22%3a%22bar%22%2c%22country%22%3a%22foo%22%2c%22email%22%3a%22bar%22%2c%22msg%22%3a%22bla%22%7d" id="form1">







<div>

</div>




<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="368A1591" />

最佳答案

在调用ASP.NET AJAX页面方法时,请考虑以下几点:


要使用ASP.NET AJAX page methods,您需要发出POST请求。这是为了防止CSRF
确保将contentType设置为application/json
使用JSON.stringify将JavaScript对象转换为JSON文本。


您的JS代码可能类似于以下内容:

$(document).ready(function () {
    var data = { name: "foo", company: "bar", country: "foo", email: "bar", msg: "bla" };
    $.ajax({
        url: "Server.aspx/sendEmail",
        type: "POST",
        data: JSON.stringify(data),
        async: false,
        contentType: 'application/json',
        success: function (data) {
            //Do something
        },
        error: function (xhr) {
            alert('Request Status: ' + xhr.status
                + ' Status Text: ' + xhr.statusText
                + ' ' + xhr.responseText);
        }
    });
});


如果仍然不起作用,请检查statusText中的错误。

关于javascript - Ajax触发成功事件,但未进入Web方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44155275/

10-11 22:58
查看更多