我是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>
答案 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
并循环数据