3

我正在使用 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 执行任何操作!它似乎适用于所有其他角色。

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

4

2 回答 2

1

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

由于 JSONRequest 最初是在 var request 上面的行中定义的,因此可能没有提供所有信息来回答这个问题。对于那个很抱歉。定义如下:

var JSONRequest = {
    'JSON': requestObject;
}

requestObject 在哪里

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

我最终对 JSON 请求进行了 URI 编码,如下所示

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

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

谢谢大家的帮助!!

于 2013-11-10T22:56:36.620 回答
1

我总是JSON.Stringify()用于我的 POST 有效负载。

于 2013-11-10T06:43:01.810 回答