posts - 6,  comments - 3,  views - 44243
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1. angularJS的$http.post请求,SpringMVC后台接收不到参数值的解决方案

问题一般为:400 Required String parameter 'rPassword' is not present 或其他400错误

解决方法 一:修改源码http://my.oschina.net/buwei/blog/191640   (可以详细了解请求接收不到的原因)

解决方法 二:感觉修改源码总是不好滴,可以采用这个方法,修改提交参数config的headers和transformRequest

(1) 创建一个全局的transformRequest function

复制代码
var app = angular.module('myApp');

app.config(function ($httpProvider) {
    $httpProvider.defaults.transformRequest = function(data){
        if (data === undefined) {
            return data;
        }
        return $.param(data);
    }
});
复制代码

 

然后为每一个方法或者创建一个全局的Content-Type header

$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';

 

(2) 为每一个需要的方法创建局部的transformRequest

复制代码
var transform = function(data){
        return $.param(data);
    }

    $http.post("/foo/bar", requestData, {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
        transformRequest: transform
    }).success(function(responseData) {
        //do stuff with response
    });
复制代码

 

参考网址AngularJS - Any way for $http.post to send request parameters instead of JSON?

2. scope.$apply的使用

问题一般为:数据双向绑定失效,就是明明在controller里面给$scope.×××赋值了,在页面上xxx愣是显示不了,但是点击一下输入框或是form表单的提交按钮,xxx数据信息就显示了,是不是好坑啊。

解决方法 : 添加 $scope.$apply()

例如

$scope.$apply(function(){
   $scope.xxx = “你赋的值”;
});

原因

一般情况下是不需要我们手动添加这一句代码的,因为angularJS本身在需要的时候调用,以达到我们所看到的数据双向绑定的效果。

但是你若是引用一个外部插件或者其他,在回调函数里创建或更新$scope.xxx的数据,因为外部插件本身已经脱离了angularJS的作用域,所以数据双向绑定在这里没有效果,只能手动添加$scope.$apply()来通知页面获取数据。

3. 因为是新手,一步一步的来

posted on   b4ping  阅读(2001)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示