Ajax 调用网络 api 不工作

Ajax call to web api is Not Working

我是 Ajax 的新手,我已经在 get 方法中编写了我的 Api 它是 return 成功的值我已经在网络控制台和提琴手中看到它但是我的 ajax 对网络 api 的调用在文档准备功能中没有得到任何值,也没有在浏览器控制台中得到任何错误我不知道为什么,任何人都请在这里帮助我我附上我的 api 和 ajax 调用。

Api:

[Route("api/GetCompanyName")]
[HttpGet]
public List<Company> GetCompanyName()
{
    var Compname = getcompName();

    return Compname;
}

public List<Company> getcompName()
{
    var CompName = new List<Company>();

    SqlConnection con = new SqlConnection(ConnString);
    con.Open();
    SqlCommand cmd = new SqlCommand("Select * From Company_table", con);
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        CompName.Add(new Company
        {
            companyname = dr["Company_mtName"].ToString(),
            //value = dr["Company_Name"].ToString()
        });
    }
    con.Close();

    return CompName;
}

Ajax 通话:

<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            url:'192.168.1.6:68/api/GetCompanyName',
            type:'GET',
            dataType:'JSON',                                
            crossDomain:true,       

            success: function(data,xhr){
                alert(data);
                }
        });
    });
</script>

我觉得一切正常,你有没有尝试添加一个错误回调作为最终参数,看看那里是否发生了什么?

您还可以添加一个 调试器; 在你的代码中声明,这将允许你单步执行你的代码并确保一切都在相应地运行..调试器风格..(只要确保你的浏览器开发工具打开(f12))..

这有助于确保调用所有内容。

你也可以用浏览器点击 url 并取回数据吗?

您需要在 api 中允许跨域访问。为此,您需要使用 System.Web.Http.Cors library.

using System.Web.Http.Cors;

[HttpGet]
[EnableCors("*", "*", "GET")]
public List<Company> GetCompanyName()
{
var Compname = getcompName();
return Compname;
}

在 cors 中,第一个参数是您的主机名。 “*”表示任何主机都可以访问 method.Second 参数是header,第三个是type。 “*”可用于使方法同时允许 POST 和 GET。

试试下面的代码。

$(document).ready(function () {
    $.ajax({
        url:"192.168.1.6:68/api/GetCompanyName",
        type:"GET",
        dataType:"application/json",                                
        crossDomain:true,       

        success: function(data,xhr){
            alert(data);
            }
    });
});

也尝试循环数据。由于它是一个 class 对象,JSON 可能无法正确显示给您。使用 $.each 并循环数据