对Web api的Ajax调用不起作用

时间:2017-11-24 05:18:53

标签: javascript ajax asp.net-mvc asp.net-web-api2

我是Ajax的新手,我已经用get方法编写了我的Api它已经成功获得了回报价值我已经在网络控制台和fiddler上看过了它,但是我的ajax调用了web 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>

3 个答案:

答案 0 :(得分:3)

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

using System.Web.Http.Cors;

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

在cors中,第一个参数是您的主机名。 &#34; *&#34;表示任何主机都可以访问该方法。第二个参数是标题,第三个参数是类型。 &#34; *&#34;可以用来使方法允许POST和GET。

答案 1 :(得分:1)

对我来说一切看起来都没问题,您是否尝试添加错误回调作为最终参数并查看是否有任何事情发生?

你也可以添加一个 调试器; 在您的代码中声明,这将允许您逐步执行代码并确保所有内容都相应地运行..调试器样式..(只需确保您的浏览器开发工具打开(f12))..

可以帮助确保一切都被调用。

你也可以用浏览器点击该网址并获取数据吗?

答案 2 :(得分:1)

尝试以下代码。

$(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);
            }
    });
});

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