欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AngularJS 使用$http服务POST提交数据

程序员文章站 2022-04-24 18:46:41
...

        笔者使用AngularJS的版本是1.6.0版本,下面的代码可能不太通用,仅供参考。

        AngularJS中调用ajax会使用到$http服务,使用$http服务发起POST请求的简单例子。

$http({  
		method:'post',  
		url:'${ctx}/province/handler/get',  
		data:{id:'${provinceId}'}  
}).then(
	function(result){  
		//do something
	}
);  

    最初并没有使用then方法来进行回调,使用的是success,之所以success方法,是参考很多的博客中的写法。在1.6.0这个版本中success和error方法已经废弃。

     在页面中定义的Controller中直接调用这个方法,就可以使用ajax了,于是就按照这个想法付诸实践,结果和自己预想的不一样,ajax请求是成功了,但是angular渲染失效了,而且这个时候控制台没有任何异常。将上面的代码注销之后,angular渲染正常。最初猜想难道AngularJS调用$http服务是有条件,毕竟$http是异步,难道必须要等到所有渲染完毕之后调用才可以。所以修改了自己的代码,等到angular渲染完毕之后,再发起ajax请求。

//AngularJS渲染完毕
			$scope.$watch('$viewContentLoaded', function() { 
				 $scope.get();
			}); 
			
			//渲染完毕触发事件 
			//定义一个方法来调用
			 $scope.get=function(){
					$http({  
						   method:'post',  
						   url:'${ctx}/province/handler/get',  
						   data:{id:'${provinceId}'}  
					}).then(
						function(result){  
							
				   		}
					);  	
			};

    修改代码之后,FireFox控制台终于报错了,后经过查阅是firefox中插件firebug引起的,建议更换其他浏览器或者移除firebug插件。这时在google浏览器下没有任何异常,而且angular渲染成功。这时移除了firebug插件,firefox浏览器也正常显示。

    因为火狐浏览器安装了Firebug插件,所以会产生上面的渲染失效问题,移除插件之后问题就解决。这时候上面的两种写法都是可以正常调用。

    还有第三种写法,与第一种写法很类似,但是第三种写法需要注意的是要先声明函数,然后再进行调用。

//定义一个方法来调用
			 $scope.get=function(){
					$http({  
						   method:'post',  
						   url:'${ctx}/province/handler/get',  
						   data:{id:'${provinceId}'}  
					}).then(
						function(result){  
							
				   		}
					);  	
			};
			//声明在调用方法之前
			$scope.get();