当前位置: 首页 > news >正文

java angularjs 跨域访问_AngularJS使用JSONP跨域问题(后台WebApi)

这两天接到项目,项目框架是同事已经搭到的,大概看了一下,用的是AngularJS框架,表示没用过,临时看了一下文档,还好文档通俗易懂,整体不是很难,大概算是有个了解。

附上教程地址:AngularJS教程

好了,下面说正事,由于项目需求,整个项目都是调用的Api,那么问题来了,MVC WebApi也是同事搭的,但是并没有考虑到跨域问题,所有Api在一个项目里面单独存在,A项目要用js访问Api的接口,所以项目开始之前的第一个问题来了,跨域。

刚开始先用了JQuery Ajax来调用接口,OK,访问成功了,欣喜之余发现了一个小bug,就是在数据返回成功后不能及时刷新,对于我这样js入门级别的小菜鸟来说,一脸懵逼。

14cd84e63fa0

页面代码

你选择的是: {{selectedSite.city}}

编号为: {{selectedSite.cityid}}

提示信息 {{msg}}

Controller(js)代码

var MyApp = angular.module("myApp", []);

MyApp.controller('getCity', function ($scope, $http) {

$.ajax({

type: "get",

url: "http://localhost:8000/api/Account/City",

dataType: "jsonp",

data: {},

success: function (data, status) {

$scope.selectedModel = data.AppendData;

$scope.msg = data.Message;

},

error: function (e) {

},

complete: function () {

}

});

//$http.jsonp("http://localhost:8000/api/Account/City?callback=JSON_CALLBACK")

//.success(function (response) {

// $scope.selectedModel = response.AppendData;

// $scope.msg = response.Message;

//});

});

现在就已经看到问题了吧,Ajax调用接口成功了,但是页面却没有更新数据,这就很难受了,好吧,放弃,不纠结了,还是去看看AngularJS的HTTP吧

附上PHP Ajax 跨域问题最佳解决方案

用PHP的朋友可以看看,我们继续

AngularJS实现跨域的几种方法

文档里面也介绍了,我没有犹豫,还是选择使用JSONP。

$http.jsonp("http://localhost/sitesettings/getBadgeInfo.pt?jsonp=JSON_CALLBACK&siteid=137bd406").success(function(data){ ... });

// The name of the callback should be the string JSON_CALLBACK.

以上是文档介绍的方法,我试了一下,访问成功了,但是返回的数据不会,大家都知道的,使用jsonp访问api要返回指定格式的数据,这里不多说,下面配图,然后现在的问题就是,虽然访问成功了,但是返回的数据却是json类型,js报错

14cd84e63fa0

2.png

走到这里其实就已经很简单了,我去api项目里面看了一下后台的配置,发现这样访问是进不到配置的设置里面的,参数不对,我就做了一些调整

var MyApp = angular.module("myApp", []);

MyApp.controller('getCity', function ($scope, $http) {

$http.jsonp("http://localhost:8000/api/Account/City?callback=JSON_CALLBACK")

.success(function (response) {

$scope.selectedModel = response.AppendData;

$scope.msg = response.Message;

});

});

把jsonp=...换成我在后台配置的参数

好吧,问题解决了,看到这里我想很多人想对我说一句第四音的:“卧槽!”

其实我的内心也是这样想的下面我配上MVC WebApi后台支持跨域的代码跟jsonp返回数据格式的截图:

14cd84e63fa0

3.png

这里是用AngularJs返回的,Ajax跟这个返回也是不一样的,有兴趣的可以去上面配图里面找找看。

相关文章:

  • java throw throws_Java面试题 (2) Java中 throw 和 throws 的区别?
  • 2007年智能手机系统大战在即
  • java输入输出流课程_java day14第十四课 IO(输入、输出)流和JAVA目录操作
  • [领域]javascript hacking guide 第7部分
  • 浅谈Acegi配置
  • java valgrind_意外的内存泄漏[Valgrind]
  • 国内比较经典的图库资源网站
  • jstack 脚本 自动日志_Shell脚本实战:日志关键字监控+自动告警
  • 漫谈创业和管理-程序员5大思维障碍
  • mysql版本号字段比较大小_sqlserver中软件版本号进行字符串对比比较大小
  • 选择的自由
  • DSA and RBackupWindow
  • 慢连接 java_java nio 如何处理慢速的连接
  • 臭毛病从何而来
  • graphpad7.04多组比较p值_手把手教你用Graphpad做单因素方差分析
  • “大数据应用场景”之隔壁老王(连载四)
  • 【技术性】Search知识
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 2017-09-12 前端日报
  • Angular 响应式表单 基础例子
  • co模块的前端实现
  • ECMAScript6(0):ES6简明参考手册
  • React系列之 Redux 架构模式
  • Terraform入门 - 3. 变更基础设施
  • 对象引论
  • 工作中总结前端开发流程--vue项目
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 每天一个设计模式之命令模式
  • 说说动画卡顿的解决方案
  • 算法-插入排序
  • 项目管理碎碎念系列之一:干系人管理
  • 学习使用ExpressJS 4.0中的新Router
  • 主流的CSS水平和垂直居中技术大全
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • #pragma pack(1)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $refs 、$nextTic、动态组件、name的使用
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)Linux——Linux常用指令
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • **PHP分步表单提交思路(分页表单提交)
  • . NET自动找可写目录
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET中两种OCR方式对比
  • .NET中统一的存储过程调用方法(收藏)
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /etc/motd and /etc/issue