【问题标题】:Ajax call to web api is Not Working对 web api 的 Ajax 调用不起作用
【发布时间】:2018-05-08 02:03:31
【问题描述】:

我是 Ajax 的新手,我已经在 get 方法中编写了我的 Api,它的返回值成功我已经在 Web 控制台和提琴手中看到了它,但是我对 Web api 的 ajax 调用在文档准备好时没有得到任何值功能并且在浏览器控制台中也没有出现任何错误我不知道为什么,请任何人在这里帮助我,我附上我的 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>

【问题讨论】:

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


【解决方案1】:

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

using System.Web.Http.Cors;

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

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

【讨论】:

  • @santhosh Read here 了解有关 cors 的更多详细信息
  • @inthevortex - 网站不错。它提供了有关 CORS 的可理解且完整的详细信息
  • 谢谢你们两位,我在控制器中使用 Jsonp 方法制作它工作正常,我会阅读有关 Cors 的信息,将来可能会有用。 :)
【解决方案2】:

在我看来一切都很好,您是否尝试过添加错误回调作为最终参数并查看那里是否发生了任何事情?

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

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

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

【讨论】:

  • 感谢您的回复,不,我不会在成功回调后尝试错误回调函数,我可能稍后再试,看看会出现什么错误,是的,我会点击该网址并取回数据我也在提琴手上检查了它,这很好,但ajax调用没有得到任何价值:(
  • 如果无法在代码中添加调试器语句,也可以通过浏览器的开发工具添加断点。这将有助于确保您点击代码。我不确定你还在打代码吗?也许只是在通话后添加一个警报以确保您正在点击代码?
  • 添加错误功能后,我收到错误警报,成功功能不起作用。如何在我使用 firefox 的浏览器中查看详细错误
  • 类似这样的:error: function(err){ alert(err); }
  • 您还可以查看 firefox 开发工具的控制台部分以查看任何错误
【解决方案3】:

试试下面的代码。

$(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 循环数据

【讨论】:

    猜你喜欢
    • 2014-05-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 2013-09-04
    • 1970-01-01
    • 2014-01-01
    相关资源
    最近更新 更多