1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > angularJS post请求后台接收不到参数

angularJS post请求后台接收不到参数

时间:2024-03-27 12:41:52

相关推荐

angularJS post请求后台接收不到参数

angularJS post请求后台接收不到参数

由于angularjs在进行$http.post请求的时候,使用的是json字符串格式传向后台,所以如果想要类似JQuery一样进行参数的接收,就需要进行转换。下面是转换的代码。

var app = angular.module('hotelApp', ['ngRoute','ui.bootstrap','treeControl','ui.router'], function($httpProvider) {// Use x-www-form-urlencoded Content-Type$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';/*** The workhorse; converts an object to x-www-form-urlencoded serialization.* @param {Object} obj* @return {String}*/var param = function(obj) {var query = '', name, value, fullSubName, subName, subValue, innerObj, i;for(name in obj) {value = obj[name];if(value instanceof Array) {for(i=0; i<value.length; ++i) {subValue = value[i];fullSubName = name + '[' + i + ']';innerObj = {};innerObj[fullSubName] = subValue;query += param(innerObj) + '&';}}else if(value instanceof Object) {for(subName in value) {subValue = value[subName];fullSubName = name + '[' + subName + ']';innerObj = {};innerObj[fullSubName] = subValue;query += param(innerObj) + '&';}}else if(value !== undefined && value !== null)query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';}return query.length ? query.substr(0, query.length - 1) : query;};// Override $http service's default transformRequest$httpProvider.defaults.transformRequest = [function(data) {return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;}];});

这样在使用app.XXX的时候,就能使传到后台的参数为parameter1:12 parameter:abc这种形式。

后记-9-30 10:25:12: 在做项目的时候偶尔会某个界面使用angularjs,这个时候就需要把上边的参数封装出来,然后在进行使用,下面贴上代码:

function baseRequest($httpProvider) {// Use x-www-form-urlencoded Content-Type$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';/*** The workhorse; converts an object to x-www-form-urlencoded serialization.* @param {Object} obj* @return {String}*/var param = function (obj) {var query = '', name, value, fullSubName, subName, subValue, innerObj, i;for (name in obj) {value = obj[name];if (value instanceof Array) {for (i = 0; i < value.length; ++i) {subValue = value[i];fullSubName = name + '[' + i + ']';innerObj = {};innerObj[fullSubName] = subValue;query += param(innerObj) + '&';}}else if (value instanceof Object) {for (subName in value) {subValue = value[subName];fullSubName = name + '[' + subName + ']';innerObj = {};innerObj[fullSubName] = subValue;query += param(innerObj) + '&';}}else if (value !== undefined && value !== null)query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';}return query.length ? query.substr(0, query.length - 1) : query;};// Override $http service's default transformRequest$httpProvider.defaults.transformRequest = [function (data) {return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;}];}

使用的时候这样:

var app = angular.module('dics', [], function ($httpProvider) {baseRequest($httpProvider);});

这样就可以在响应的controller里进行post请求了。下面是实例:

$http.post(BASE_URL + 'app/diclistadd',params).success(function (data) {}).error(function () {});

$http.get(BASE_URL + 'app/diclist?tablename=list', {}).success(function (data) {}).error(function (data) {});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。