Angularjs - $ http发布数据中的等号

时间:2013-11-09 23:52:23

标签: json http angularjs escaping angularjs-service

我正在使用angularjs'$ http服务将数据发布到我的API。它工作得很好..直到我添加并等于数据内容的符号(例子中的JSONRequest)

var request = {
    'method': 'POST',
    'url': API_URL + apiActionName,
    'data': JSONRequest,
    'withCredentials': true,
};
$http(request).
success(function(data, status, headers, config) {
    // handle success
}).
error(function(data, status, headers, config) {
    // handle error
}

这适用于数据包含以下JSONRequest

{
    'text':'this is  some text'
}

但是当数据包含此

{
    'text':'this is = some text'
}

请求被转义,服务器无法对POST做任何事情!它似乎适用于所有其他角色。

任何帮助将不胜感激!感谢

2 个答案:

答案 0 :(得分:1)

我总是使用JSON.Stringify()来获取POST有效负载。

答案 1 :(得分:1)

它与URI编码有关。正在被发送到较低级别AJAX API的字符串不是uri编码的。这意味着当它在帖子中看到=符号时,它正在解析它,假设是uri编码。

由于JSONRequest最初是在var请求上面的行上定义的,因此可能没有回复此问题的所有信息。对于那个很抱歉。它的定义如下:

var JSONRequest = {
    'JSON': requestObject;
}

其中requestObject是

{
    'text':'this is = some text'
}

我最终编码了JSON请求的URI,如下所示

var JSONRequest = 'JSON=' + encodeURIComponent(JSON.stringify(requestObject));

这解决了问题并使我的API调用对HTTP协议更加健壮。

感谢所有帮助!!