ajax 跨域webapi 最简单的demo(只介绍Get)
这几天遇到一个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)的更多相关文章
- web api 跨域请求,ajax跨域调用webapi
1.跨域问题仅仅发生在Javascript发起AJAX调用,或者Silverlight发起服务调用时,其根本原因是因为浏览器对于这两种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服 ...
- WebApi 自定义过滤器实现支持AJAX跨域的请求
我想关于此类话题的文章,大家一搜铺天盖地都是,我写此文的目的,只是对自己学习过程的记录,能对需要的朋友有所帮助,也百感荣幸!!!废话不多说,直接上代码! 客户端:很简单的AJAX请求 <html ...
- AJAX跨域调用ASP.NET MVC或者WebAPI服务
关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案 作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP. ...
- js便签笔记(13)——jsonp其实很简单【ajax跨域请求】
前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资料,原来如此... 为何一直知道jsonp,但一直迷迷糊糊的不明白 ...
- jsonp其实很简单【ajax跨域请求】
js便签笔记(13)——jsonp其实很简单[ajax跨域请求] 前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资 ...
- 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 ...
- 简单ajax跨域请求
最近遇到需要ajax跨域的需求 首先看下不做任何处理特别处理的ajax跨域请求会出现什么样的错误 客户端代码: <script type="text/javascript"& ...
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...
- Ajaxadr ajax跨域请求crossdomain
最近工作需要用到ajax跨域请求参数,网上找很很久,最终得到解决之道.分享一下吧,希望能帮到各位 也许你已经发现在浏览器直接敲路径能获得对方提供接口的参数,而一到项目中Ajax请求却老是失败.原因是, ...
随机推荐
- poj1703 Find them, Catch them(种类并查集
题目地址:http://poj.org/problem?id=1703 题目大意:警察抓了n个坏蛋,这些坏蛋分别属于龙帮或蛇帮.输入m个语句,A x y询问x和y的关系(在一个帮派,不在,不能确定), ...
- 禁用UpdateOrchestrator重新启动任务
LTSC2019 联网下载更新后,总是用户不使用电脑的时候重启更新系统. 搜索发现是计划任务中\Microsoft\Windows\UpdateOrachestrator重新任务的导致的. 查看这个任 ...
- 十五 JSP开发模式&MVC设计模式
JSP开发模式: JavaBean + JSP : 缺点:页面代码过多,不利于维护,JSP页面代码变得臃肿 Servlet + JavaBean + JSP :MVC设计模式 M:model 模 ...
- Django(十九)文件上传:图片上传(后台上传、自定义上传)、
一.基本设置 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/http/file-uploads/ 1)配置project1/settings ...
- HDU1880 魔咒词典
题目大意:对应的输入多行,每行两个字符串,两个字符串互相映射.接下来询问的时候,如果这个字符串出现过,输出其对应的字符串. 分析:二重哈希来判断字符串是否存在,输出其对应的字符串就行.二重哈希的入门题 ...
- 功耗极低非接触 13.56mhz读卡芯片:SI522
众所周知13.56mhz是高频,一般用于防伪,做到成品非常薄.在智能门锁以及RFID读卡器是非常多人采用的,不管是在读卡距离.读卡灵敏度都是非常好的.现在智能门锁的竞争性很大,大多厂商及方案商都慢慢往 ...
- MySQL 批量更新、删除数据shell脚本
#!/bin/bash. ~/.bash_profilelog=/tmp/update_log_1_$(date +%F).logvstart=1step=100vstop=$((${vstart}+ ...
- 使用线程池测试cpu的并发计算能力
接到一个需求是测试一下cpu并发计算能力,针对int和float求和单位时间能执行几次的问题.可能是服务器选型用到的参数. 开始使用的是fork-join,但是发现fork-join每次得到的结果值波 ...
- 程序员如何 10 分钟用 Python 画出蒙娜丽莎?
之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路 ...
- 036、Java中三目运算符的使用
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...