相关疑难解决方法(0)

AngularJS - $ http.post发送请求参数而不是JSON的任何方式?

我有一些旧的代码通过jQuery的post方法发出一个AJAX POST请求,看起来像这样:

$.post("/foo/bar", requestData,
    function(responseData)
    {
        //do stuff with response
    }
Run Code Online (Sandbox Code Playgroud)

requestData 只是一个具有一些基本字符串属性的javascript对象.

我正在将我们的东西移动到使用Angular,我想用$ http.post替换这个调用.我想出了以下内容:

$http.post("/foo/bar", requestData).success(
    function(responseData) {
        //do stuff with response
    }
});
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到了来自服务器的500错误响应.使用Firebug,我发现这样就发送了请求体:

{"param1":"value1","param2":"value2","param3":"value3"}
Run Code Online (Sandbox Code Playgroud)

成功的jQuery $.post发送身体像这样:

param1=value1&param2=value2&param3=value3
Run Code Online (Sandbox Code Playgroud)

我遇到的端点是期望请求参数而不是JSON.所以,我的问题是,无论如何要告诉$http.post发送javascript对象作为请求参数而不是JSON?是的,我知道我可以自己从对象构造字符串,但我想知道Angular是否提供了开箱即用的东西.

javascript jquery post angularjs

116
推荐指数
7
解决办法
21万
查看次数

AngularJs:当内部调用$ http或$ resource时,让方法同步返回

有没有办法等待一个承诺,以便你可以从中获得实际结果并返回而不是返回承诺本身?我正在考虑类似于C#await关键字如何与Tasks一起工作的东西.

下面是一个示例,说明为什么我希望像canAccess()这样的方法返回true或false而不是promise,以便可以在if语句中使用它.方法canAccess()将使用$ http或$ resource进行AJAX调用,然后以某种方式等待promise得到解决.

看起来像这样:

$scope.canAccess = function(page) {
    var resource = $resource('/api/access/:page');
    var result = resource.get({page: page});

    // how to await this and not return the promise but the real value
    return result.canAccess;
}
Run Code Online (Sandbox Code Playgroud)

反正有没有这样做?

谢谢.

javascript angularjs

20
推荐指数
1
解决办法
7万
查看次数

标签 统计

angularjs ×2

javascript ×2

jquery ×1

post ×1