[Angularjs]$http.post与$.post

前端之家收集整理的这篇文章主要介绍了[Angularjs]$http.post与$.post前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

摘要

在angularjs发送post请求的时候,确实很困惑,在传递json数据的时候,总会遇到在服务端无法接受到参数的情况,这里有必要与$.post进行比较学习一下。

一个例子

这里模拟登录的一个场景,post用户名与密码,服务端接受账户并直接返回到客户端不做其它业务处理。

使用angularjs版本

服务端

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; GET: /<controller>/</span> <span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; IActionResult Login() { </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; View(); } [HttpPost] </span><span style="color: #0000ff;"&gt;public</span> IActionResult Login(<span style="color: #0000ff;"&gt;string</span> userName,<span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt; userPwd) { </span><span style="color: #0000ff;"&gt;var</span> resut =<span style="color: #000000;"&gt; Request.Form; </span><span style="color: #0000ff;"&gt;return</span> Json(<span style="color: #0000ff;"&gt;new</span> { _code = <span style="color: #800080;"&gt;200</span>,_msg = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Login success</span><span style="color: #800000;"&gt;"</span>,name = userName,password =<span style="color: #000000;"&gt; userPwd }); } }</span></pre>

$.post

首先使用$.post的方式,直接提交账户密码

$.post(~/Account/Login,{ userName: ,userPwd:

响应

这里我们看一下请求体

那么我们现在看看angularjs的$http.post的情况,到底区别在哪儿?

Meta IT怪O 用户登录 </span><span style="background-color: #f5f5f5; color: #0000ff;"&gt;var</span><span style="background-color: #f5f5f5; color: #000000;"&gt; config </span><span style="background-color: #f5f5f5; color: #000000;"&gt;=</span><span style="background-color: #f5f5f5; color: #000000;"&gt; { headers: { </span><span style="background-color: #f5f5f5; color: #000000;"&gt;'</span><span style="background-color: #f5f5f5; color: #000000;"&gt;Content-Type</span><span style="background-color: #f5f5f5; color: #000000;"&gt;'</span><span style="background-color: #f5f5f5; color: #000000;"&gt;: </span><span style="background-color: #f5f5f5; color: #000000;"&gt;'</span><span style="background-color: #f5f5f5; color: #000000;"&gt;application/x-www-form-urlencoded</span><span style="background-color: #f5f5f5; color: #000000;"&gt;'</span><span style="background-color: #f5f5f5; color: #000000;"&gt; },</span><span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt;transformRequest: function (obj) {</span> <span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; var str = [];</span> <span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; for (var p in obj) {</span> <span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));</span> <span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; }</span> <span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; return str.join("&amp;");</span> <span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt;}</span>

<span style="background-color: #f5f5f5; color: #000000;"> };
console.log(data);
$http.post(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">@Url.Content(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">~<span style="background-color: #f5f5f5; color: #000000;">/<span style="background-color: #f5f5f5; color: #000000;">Account<span style="background-color: #f5f5f5; color: #000000;">/<span style="background-color: #f5f5f5; color: #000000;">Login<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">)<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">,data,config).success(<span style="background-color: #f5f5f5; color: #0000ff;">function<span style="background-color: #f5f5f5; color: #000000;"> (data) {
console.log(data);
});
};

    });
</span><span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;script</span><span style="color: #0000ff;"&gt;></span>

<span style="color: #0000ff;"></<span style="color: #800000;">head<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">body<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">ng-controller<span style="color: #0000ff;">="LoginController"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="text"<span style="color: #ff0000;"> placeholder<span style="color: #0000ff;">="用户名"<span style="color: #ff0000;"> ng-model<span style="color: #0000ff;">="userName"<span style="color: #ff0000;"> value<span style="color: #0000ff;">="" <span style="color: #0000ff;">/>
<span style="color: #0000ff;"><<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="password"<span style="color: #ff0000;"> placeholder<span style="color: #0000ff;">="密码"<span style="color: #ff0000;"> ng-model<span style="color: #0000ff;">="userPwd"<span style="color: #ff0000;"> value<span style="color: #0000ff;">="" <span style="color: #0000ff;">/>
<span style="color: #0000ff;"><<span style="color: #800000;">button <span style="color: #ff0000;">ng-click<span style="color: #0000ff;">="Login()"<span style="color: #0000ff;">>登录<span style="color: #0000ff;"></<span style="color: #800000;">button<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">body<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">html<span style="color: #0000ff;">>

登录

出现了,处于习惯的原因,平时就会这样来写$http.post的。但结果并不是想要的。那么咱们与$.post对比一下请求体。

看到没?差别就在这里。

发现问题了,那么我们就要转化为$.post提交参数的方式。幸好,angularjs中$http.post提供了一个转化参数的transformRequest方法,可以在config中加上该参数:

它的作用就是将提交的参数转化为$.post提交参数的方式。这样看到的请求体中参数就与$.post相同了。

可以在全局进行设置

猜你在找的Angularjs相关文章