Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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# Ajax调用失败,但不是';调试时不要抛出错误_C#_Ajax - Fatal编程技术网

C# Ajax调用失败,但不是';调试时不要抛出错误

C# Ajax调用失败,但不是';调试时不要抛出错误,c#,ajax,C#,Ajax,我的AJAX调用用于将数据从JS发送到C,因此我可以使用它服务器端。我的呼叫似乎导致一个错误抛出警报(“失败”)。我正在visual studio调试器中运行解决方案,但没有出现错误。我已经尝试了很多来解决这个问题,但不确定为什么它不起作用 如果没有任何错误,为什么会失败? AJAX调用- function get_email(){ var test_email = $("#email_entry").val(); console.log(test_email); $("

我的AJAX调用用于将数据从JS发送到C,因此我可以使用它服务器端。我的呼叫似乎导致一个错误抛出警报(“失败”)。我正在visual studio调试器中运行解决方案,但没有出现错误。我已经尝试了很多来解决这个问题,但不确定为什么它不起作用

如果没有任何错误,为什么会失败?

AJAX调用-

function get_email(){
    var test_email = $("#email_entry").val();
    console.log(test_email);
    $("#email_entry").val('');

if ((email_validate(test_email)) == true) {

    $.ajax({
        type: "POST",
        url: "WebForm1.aspx/GetData",
        contentType: "application/text; charset=utf-8",
        data: test_email,
        dataType: "string",
        success: function (result) {
            alert('Works');
        },
        error: function (result) {
            alert('Doesnt work');
        }
    });

}else if ((email_validate(test_email)) == false) {
    alert("Email is not valid!");
}
}
C#数据存储的位置

    public partial class WebForm1 : System.Web.UI.Page
    {
        public class EmailStore
        {
            public string Email { get; set; }
        }

        [WebMethod]
        public static void GetData(string test_email)
        {
            String a = test_email;
            Console.WriteLine(a);
        }
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
更改您的
$.ajax()
,如下所示:

 $.ajax({
        type: "POST",
        url: "WebForm1.aspx/GetData",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({test_email: test_email}),
        dataType: "json",
        success: function (result) {
            alert('Works');
        },
        error: function (result) {
            alert('Doesnt work');
        }
    });


我注意到你没有从你的c#方法返回一个状态来回应它是否成功。 在ASPNetCORE c#中,将结果返回到ajax调用,如下所示:

public IActionResult GetData(string person_email)
    {
     try
        {
        String a = test_email;
        Console.WriteLine(a);
        return string.IsNullOrEmpty(a) ? 
        (IActionResult)BadRequest("email null or empty") : Ok();
        }
        catch (Exception ex)
        {
            return BadRequest(ex.Message);
        }
    }

浏览器devtools控制台中是否有任何错误?var text_email=$(“#email_entry”).val();控制台日志(测试电子邮件);你把变量名text_email拼错了test_email第二,试试这个-data:“test_email=“+test_email第三,为什么这个语句有不同的变量?公共静态void GetData(string person_email){string a=test_email;Console.WriteLine(a);}。我认为应该是这样的GetData(字符串测试\电子邮件)。我想,[WebMethod]必须具有与查询参数变量相同的变量名。更改
数据类型:“json”
和更改
内容类型:“application/json;charset=utf-8”
以及最后的
数据:json.stringify({test_email:test_email}),
。感谢您的评论,还没有开发C#但只是想让AJAX调用正常工作,这是一个很好的建议!