这几天遇到一个nodejs的项目,使用VSCode开发,需要连接数据库的,但是用nodejs连接数据库比较繁琐,需要安装很多东西,本人也懒得去研究了。后来想到建一个WebAPI然后用ajax来调用,避免使用nodejs直接和数据库打交道。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

首先介绍webapi怎么搞

1.在ASP.net MVC Web 下选择WebAPI模板 建立项目

2.在项目根目录新建一个类(用来解决跨域的问题)

内容如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Http.Filters;
  6.  
  7. namespace xxxService
  8. {
  9. public class CrossSiteAttribute : System.Web.Http.Filters.ActionFilterAttribute
  10. {
  11. private const string Origin = "Origin";
  12. /// <summary>
  13. /// Access-Control-Allow-Origin是HTML5中定义的一种服务器端返回Response header,用来解决资源(比如字体)的跨域权限问题。
  14. /// </summary>
  15. private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
  16. /// <summary>
  17. /// originHeaderdefault的值可以使 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求
  18. /// </summary>
  19. ///
  20. //private const string originHeaderdefault = "http://192.168.13.7:8002" ;
  21. private const string originHeaderdefault = "*";
  22. /// <summary>
  23. /// 该方法允许api支持跨域调用
  24. /// </summary>
  25. /// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 类的新实例。</param>
  26. public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
  27. {
  28. actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
  29. }
  30. }
  31. }

3.在controller下新建一个StringsController.cs   在调用api的时候得到的数据就是这边reurn的数据

内容如下:([CrossSite]不能少,用以解决跨域的问题)

  1. using xxxService.Models;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Net.Http;
  8. using System.Web.Http;
  9.  
  10. namespace xxxService.Controllers
  11. {
  12. public class StringsController : ApiController
  13. {
  14. [CrossSite]
  15. public DataTable Get(string CultureName, string ProjectName)
  16. {
  17. object[] Params = new object[];
  18. Params[] = ProjectName;
  19. Params[] = CultureName;
  20.  
  21. DbHelper DBH = new DbHelper();
  22. DataTable result = DBH.ExecuteDataTable("usp_GetPluralStingByProjectAndLanguage", Params);
  23. return result;
  24. }
  25. }
  26. }

番外:

这边return的result 是DataTable类型的,在用ajax跨域调用的时候会不成功(在同一台机器上是成功的,但是部署到服务器上就会失败,确认是返回这个类型的原因),可能是解析错误的问题,所以返回的时候可以对datatable处理之后再返回,例如:

  1. DataTable tables = DBH.ExecuteDataTable("usp_GetPluralStingByProjectAndLanguage", Params);
  2. foreach (DataRow row in tables.Rows)
  3. {
  4. result.CultureName = row[].ToString();
  5. result.Translation = row[].ToString();
  6. result.SourceString = row[].ToString();
  7. result.ResourceID = row[].ToString();
  8. result.ProjectName = row[].ToString();
  9.  
  10. results.Add(result);
  11. }

这是后来补充的,和本篇文章关联不大

4.为了给一个简单的效果图,我新建了一个NamesController.cs,和上面的其实一样

内容如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Net.Http;
  7. using System.Web.Http;
  8. using xxxService.Models;
  9.  
  10. namespace xxxService.Controllers
  11. {
  12. public class NamesController : ApiController
  13. {
  14. [CrossSite]
  15. public string Get()
  16. {
  17.  
  18. return "zhangsan";
  19.  
  20. }
  21. }
  22. }

访问该api: http://localhost:59579/api/names/get

就此api的编写完成(都是最简单的例子)

5.ajax调用,在另一个项目中引入jquery

添加如下代码:

  1. $.ajax({
  2. type: 'GET',
  3. url: 'http://localhost:59579/api/strings/get',
  4. dataType: 'JSON',
  5. data:{
  6. CultureName:cultureName,
  7. ProjectName:projectName
  8. },
  9. success: function (data) {
  10. DrawTable(data);
  11. layer.closeAll('loading');
  12. }
  13. });

如有不清楚参照:https://www.cnblogs.com/Leo_wl/p/4780650.html 这个写的比较好

ajax 跨域webapi 最简单的demo(只介绍Get)的更多相关文章

  1. web api 跨域请求,ajax跨域调用webapi

    1.跨域问题仅仅发生在Javascript发起AJAX调用,或者Silverlight发起服务调用时,其根本原因是因为浏览器对于这两种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服 ...

  2. WebApi 自定义过滤器实现支持AJAX跨域的请求

    我想关于此类话题的文章,大家一搜铺天盖地都是,我写此文的目的,只是对自己学习过程的记录,能对需要的朋友有所帮助,也百感荣幸!!!废话不多说,直接上代码! 客户端:很简单的AJAX请求 <html ...

  3. AJAX跨域调用ASP.NET MVC或者WebAPI服务

    关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案 作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP. ...

  4. js便签笔记(13)——jsonp其实很简单【ajax跨域请求】

    前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资料,原来如此... 为何一直知道jsonp,但一直迷迷糊糊的不明白 ...

  5. jsonp其实很简单【ajax跨域请求】

    js便签笔记(13)——jsonp其实很简单[ajax跨域请求] 前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资 ...

  6. Ajax跨域问题及解决方案 asp.net core 系列之允许跨越访问(Enable Cross-Origin Requests:CORS) c#中的Cache缓存技术 C#中的Cookie C#串口扫描枪的简单实现 c#Socket服务器与客户端的开发(2)

    Ajax跨域问题及解决方案   目录 复现Ajax跨域问题 Ajax跨域介绍 Ajax跨域解决方案 一. 在服务端添加响应头Access-Control-Allow-Origin 二. 使用JSONP ...

  7. 简单ajax跨域请求

    最近遇到需要ajax跨域的需求 首先看下不做任何处理特别处理的ajax跨域请求会出现什么样的错误 客户端代码: <script type="text/javascript"& ...

  8. 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。

    ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...

  9. Ajaxadr ajax跨域请求crossdomain

    最近工作需要用到ajax跨域请求参数,网上找很很久,最终得到解决之道.分享一下吧,希望能帮到各位 也许你已经发现在浏览器直接敲路径能获得对方提供接口的参数,而一到项目中Ajax请求却老是失败.原因是, ...

随机推荐

  1. Docker 镜像文件的导入和导出

    使用save命令 保存镜像 docker save -o name_by_you.tar exist_images 将文件copy到另一台机器 使用load命令将镜像文件保存到本地仓库 docker ...

  2. VS 右键属性闪一下啥也打不开问题

    unity项目,从vs项目右键属性闪一下啥也打不开的问题这个是因为工程是unity管理的,里面有个插件默认设定不可查看修改属性修改:vs中打开“工程”->"选项"中(修改后这 ...

  3. 创建Git本地仓库

    一.获取Git仓库 安装好Git后即可创建Git本地仓库,开始项目的版本管理.有两种方法取得Git项目仓库:1.在现有项目或目录下导入所有文件到Git中:2.从一个服务器克隆一个现有的Git仓库. 1 ...

  4. 关于syx的npy

    请认准官方女友----- STL 任何人在不得syx同意下不能传播其它谣言

  5. 08 SSM整合案例(企业权限管理系统):07.订单操作

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 07.订单操作 SSM订单操作 ...

  6. HDU1880 魔咒词典

    题目大意:对应的输入多行,每行两个字符串,两个字符串互相映射.接下来询问的时候,如果这个字符串出现过,输出其对应的字符串. 分析:二重哈希来判断字符串是否存在,输出其对应的字符串就行.二重哈希的入门题 ...

  7. python isinstance()判断数据类型

    举例: d = (1,2,3) print(isinstance(d,int)) #False print(isinstance(d,tuple)) #True print(isinstance(d, ...

  8. Excel的查询函数vlookup和index使用

    需求 有一些省市的区县,有600多条数据,只有名称,没有编码.现在要根据名称去3000多条数据里面查询. 如图,拿出一部分数据来演示 vlookup 使用vlookup,由于vlookup只能查询数据 ...

  9. DirectX9完全面向对象框架

    #pragma once #define UNICODE //Direct3D lib #include<d3d9.h> #include<d3dx9.h> #pragma c ...

  10. LeetCode874 模拟行走机器人(简单模拟—Java之HashSet简单应用)

    题目: 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度-1:向右转 90 度1 <= x <= 9 ...