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

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

首先介绍webapi怎么搞

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

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

内容如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Filters; namespace xxxService
{
public class CrossSiteAttribute : System.Web.Http.Filters.ActionFilterAttribute
{
private const string Origin = "Origin";
/// <summary>
/// Access-Control-Allow-Origin是HTML5中定义的一种服务器端返回Response header,用来解决资源(比如字体)的跨域权限问题。
/// </summary>
private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
/// <summary>
/// originHeaderdefault的值可以使 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求
/// </summary>
///
//private const string originHeaderdefault = "http://192.168.13.7:8002" ;
private const string originHeaderdefault = "*";
/// <summary>
/// 该方法允许api支持跨域调用
/// </summary>
/// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 类的新实例。</param>
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
}
}
}

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

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

using xxxService.Models;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http; namespace xxxService.Controllers
{
public class StringsController : ApiController
{
[CrossSite]
public DataTable Get(string CultureName, string ProjectName)
{
object[] Params = new object[];
Params[] = ProjectName;
Params[] = CultureName; DbHelper DBH = new DbHelper();
DataTable result = DBH.ExecuteDataTable("usp_GetPluralStingByProjectAndLanguage", Params);
return result;
}
}
}

番外:

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

 DataTable tables = DBH.ExecuteDataTable("usp_GetPluralStingByProjectAndLanguage", Params);
foreach (DataRow row in tables.Rows)
{
result.CultureName = row[].ToString();
result.Translation = row[].ToString();
result.SourceString = row[].ToString();
result.ResourceID = row[].ToString();
result.ProjectName = row[].ToString(); results.Add(result);
}

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

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

内容如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using xxxService.Models; namespace xxxService.Controllers
{
public class NamesController : ApiController
{
[CrossSite]
public string Get()
{ return "zhangsan"; }
}
}

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

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

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

添加如下代码:

$.ajax({
type: 'GET',
url: 'http://localhost:59579/api/strings/get',
dataType: 'JSON',
data:{
CultureName:cultureName,
ProjectName:projectName
},
success: function (data) {
DrawTable(data);
layer.closeAll('loading');
}
});

如有不清楚参照: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. vmware fusion 进入 BIOS

    要进入bios有三种方法:1.>启动的时候按F2即可进入bios进行一些启动盘等选项的操作.但是,启动的时候很难第一时间按F2成功进入bios, 2.>修改vmware 进入bios之前的 ...

  2. POJ 3685:Matrix 二分

    Matrix Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 5489   Accepted: 1511 Descriptio ...

  3. java实现下划线转驼峰

    废话少说,直接上代码 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Temp { publi ...

  4. 007.Oracle数据库 , 使用%进行模糊查询

    /*Oracle数据库查询日期在两者之间*/ SELECT PKID, OCCUR_DATE, ATA FROM LM_FAULT WHERE ( ( OCCUR_DATE >= to_date ...

  5. 001.Delphi插件之QPlugins,一个最简单的插件

    安装QPlugins里面的Demo,复制粘贴着写了一个最简单的插件,看看好不好用 EXE代码如下: unit Main_Frm; interface uses Winapi.Windows, Wina ...

  6. 7.10 Varnish 优化

  7. DCGAN增强图片数据集

    DCGAN增强图片数据集 1.Dependencies Python 3.6+ PyTorch 0.4.0 numpy 1.14.1, matplotlib 2.2.2, scipy 1.1.0 im ...

  8. Codeforces Round #622 (Div. 2) 题解和我的分析

    首先下午场非常适合中国人,开心 A 三种食物有个数限制,上菜,每次上菜跟以前的样式不能一样(食物的种类及个数各不相同),且每种食物最多用一次,问最多能上几次 对a,b,c排序,然后枚举上菜种类就可以了 ...

  9. P1429 平面最近点对(加强版)(分治)

    P1429 平面最近点对(加强版) 主要思路: 分治,将点按横坐标为第1关键字升序排列,纵坐标为第2关键字升序排列,进入左半边和右半边进行分治. 设d为左右半边的最小点对值.然后以mid这个点为中心, ...

  10. Golang的进制转换实战案例

    Golang的进制转换实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用进制概述 1>.进制概述 进制也就是进位制,是人们规定的一种进位方法.举个例子:二进制就 ...