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