Javascript 对web api的Ajax调用不起作用

Javascript 对web api的Ajax调用不起作用,javascript,ajax,asp.net-mvc,asp.net-web-api2,Javascript,Ajax,Asp.net Mvc,Asp.net Web Api2,我是Ajax新手,我已经在get方法中成功地编写了Api,它的返回值我在web控制台和fiddler中都看到过,但是我对web Api的Ajax调用在文档就绪函数中没有获取任何值,在浏览器控制台中也没有获取任何错误我不知道为什么,请任何人帮助我在这里附加我的Api和Ajax调用 Api: [路由(“api/GetCompanyName”)] [HttpGet] 公共列表GetCompanyName() { var Compname=getcompName(); 返回Compname; } 公共列

我是Ajax新手,我已经在get方法中成功地编写了Api,它的返回值我在web控制台和fiddler中都看到过,但是我对web Api的Ajax调用在文档就绪函数中没有获取任何值,在浏览器控制台中也没有获取任何错误我不知道为什么,请任何人帮助我在这里附加我的Api和Ajax调用

Api:

[路由(“api/GetCompanyName”)]
[HttpGet]
公共列表GetCompanyName()
{
var Compname=getcompName();
返回Compname;
}
公共列表getcompName()
{
var CompName=新列表();
SqlConnection con=新的SqlConnection(ConnString);
con.Open();
SqlCommand cmd=新的SqlCommand(“从公司表格中选择*”,con);
SqlDataReader dr=cmd.ExecuteReader();
while(dr.Read())
{
公司名称添加(新公司)
{
companyname=dr[“公司名称”].ToString(),
//value=dr[“公司名称”]。ToString()
});
}
con.Close();
返回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>

$(文档).ready(函数(){
$.ajax({
url:'192.168.1.6:68/api/GetCompanyName',
类型:'GET',
数据类型:'JSON',
跨域:是的,
成功:函数(数据,xhr){
警报(数据);
}
});
});

在我看来一切正常,您是否尝试添加错误回调作为最终参数,并查看是否发生了任何事情

您还可以添加 调试器; 语句,这将允许您逐步检查代码并确保所有操作都是相应的。。调试器样式。。(只需确保浏览器开发工具处于打开状态(f12))

这有助于确保所有东西都被调用


您还可以使用浏览器点击该url并返回数据吗?

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

using System.Web.Http.Cors;

[HttpGet]
[EnableCors("*", "*", "GET")]
public List<Company> GetCompanyName()
{
var Compname = getcompName();
return Compname;
}
使用System.Web.Http.Cors;
[HttpGet]
[EnableCors(“*”、“*”、“GET”)]
公共列表GetCompanyName()
{
var Compname=getcompName();
返回Compname;
}

在cors中,第一个参数是主机名。“*”表示任何主机都可以访问该方法。第二个参数是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);
            }
    });
});

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

192.168.1.6:68/api/GetCompanyName
缺少
http://
?对于跨域,您可能需要使用JSONP而不是JSONTY url@MadOX告诉我JSONP的情况。请告诉我JSONP与常规JSON类似,代码方面所有js都相同。感谢您的回复,不,我不会在成功回调后尝试错误回调函数,我可能稍后会尝试,看看会出现什么错误,是的,我会点击该url并返回数据,我也会在fiddler上检查它,这很好,但ajax调用没有得到任何值:(如果无法向代码中添加调试器语句,您也可以通过浏览器的开发工具添加断点。这将有助于确保您正在命中代码。我不确定您是否仍在命中代码?也许只需在调用后添加一个警报以确保您命中代码?添加错误函数后,我将获得错误警报,成功如何在浏览器中查看详细错误我正在使用Firefox,如下所示:error:function(err){alert(err);}您还可以签出firefox开发工具的控制台部分以查看任何errors@santhosh有关cors@inthevortex-该网站很好。它提供了有关Cors的可理解和完整的详细信息。谢谢你们两位,我在我的控制器中使用Jsonp方法制作了它。它工作正常,我将阅读有关Cors的信息,它可能在将来有用。:)
$(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);
            }
    });
});