带有Web API的Ajax Jquery请求

查马拉

我正在尝试从WEB API调用中检索JSON结果。

我的WEP API方法:

[AcceptVerbs("GET", "POST")]
    public object GetTest()
    {
         rep = new ChatRepository();
        chatBoxCLS box = rep.Chatrequest(chatRequestLevel.Parent, null);

        System.Web.Mvc.JsonResult jsonResult = new System.Web.Mvc.JsonResult
        {
            Data = box,
            JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet
        };


        return jsonResult.Data;
    }

我已经如下修改了WebapiConfig.cs,因此它将始终返回JSON

 config.Routes.MapHttpRoute(
          name: "DefaultApi",
          routeTemplate: "api/{controller}/{action}/{id}",
          defaults: new { action = "get", id = RouteParameter.Optional }
          );

            var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
            config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

以下是我的Jquery ajax调用:

<script type='text/javascript'>

    $(document).ready(function () {

        $.ajax({
            type: 'GET',
            url: 'http://localhost:6606/api/values/GetTest',

            dataType: 'json',

            crossDomain: true,
            success: function (msg) {

                alert('success');

            },
            error: function (request, status, error) {

                alert('error');
            }
        });
    });

</script>

总是会出现错误警报。没有从WEB API收到数据。我尝试调试,发现我的请求成功命中了WEB API方法并返回JSON。以下是它返回的JSON数据。

{“ listOfItems”:[{“ id”:14,“ description”:“新测试”,“ display_number”:1},{“ id”:4,“ description”:“可操作”,“ display_number”:2} ,{“ id”:3,“ description”:“ sales”,“ display_number”:3},{“ id”:5,“ description”:“ technical”,“ display_number”:4}],“ reply”: null,“ history”:null,“ Initialhistory”:null,“ Question”:“”,“ chatids”:null,“ displayNum”:null}

为什么我在客户端没有得到任何结果?

查马拉

我通过在响应标头中添加Access-Control-Allow-Origin解决了该问题

public class CrossDomainActionFilter : ActionFilterAttribute
    {
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            bool needCrossDomain = true;

            if (needCrossDomain)
            {
                actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
            }

            base.OnActionExecuted(actionExecutedContext);
        }
    }


[AcceptVerbs("GET", "POST")]
[CrossDomainActionFilter]
    public object GetTest()
    {
         rep = new ChatRepository();
        chatBoxCLS box = rep.Chatrequest(chatRequestLevel.Parent, null);

        System.Web.Mvc.JsonResult jsonResult = new System.Web.Mvc.JsonResult
        {
            Data = box,
            JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet
        };


        return jsonResult.Data;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有jQuery Ajax请求的CORS Amazon S3文件上传

来自分类Dev

带有特殊字符的JQuery AJAX POST请求

来自分类Dev

带有承诺的jQuery ajax请求在IE9中不起作用

来自分类Dev

带有jQuery / Rails的AJAX更改功能请求

来自分类Dev

带有JQuery Ajax请求的ASP.NET Web窗体方法失败

来自分类Dev

来自带有CORS的jQuery ajax的Reddit API:所请求的资源上不存在“ Access-Control-Allow-Origin”标头

来自分类Dev

删除带有ajax请求的文件

来自分类Dev

Web API + jQuery AJAX DELETE请求返回404

来自分类Dev

jQuery Ajax POST请求在Rails中带有参数(Ruby on Rails)

来自分类Dev

来自asmx Web服务的jQuery ajax请求

来自分类Dev

如何从jQuery发送带有AJAX请求的令牌

来自分类Dev

Angular-找不到带有Owin + Web API控制器参数的HTTP GET请求

来自分类Dev

带有ajax请求的Hightchart

来自分类Dev

带有jsonp的jQuery Ajax

来自分类Dev

带有jQuery / Rails的AJAX更改功能请求

来自分类Dev

Ajax提交带有漂亮URL的请求

来自分类Dev

带有JQuery Ajax请求的ASP.NET Web窗体方法失败

来自分类Dev

带有ajax / jquery请求的html页面中未显示成功消息

来自分类Dev

在Web API 2中返回带有400错误请求响应的错误消息列表

来自分类Dev

带有AJAX请求的JSON的jQuery Progressbar

来自分类Dev

带有setInterval的Ajax请求闪烁

来自分类Dev

带有Bootstrap的AJAX请求

来自分类Dev

带有JQUERY的AJAX POST请求

来自分类Dev

带有jQuery Promise的链式ajax请求

来自分类Dev

PHP Symfony API和jQuery Ajax请求

来自分类Dev

无法从 ASP.NET Web API 中的 jQuery AJAX 请求获取标头

来自分类Dev

使用 jquery 的 AJAX 请求没有返回

来自分类Dev

没有 jQuery 的并行 AJAX 请求

来自分类Dev

通过 fetch api 发送带有 ajax 请求的 cookie

Related 相关文章

热门标签

归档