谁能告诉我为什么以下声明不会将发布数据发送到指定的网址?当我打印$ _POST时,在服务器上调用url - 我得到一个空数组.如果我在将数据添加到数据之前在控制台中打印消息 - 它会显示正确的内容.
$http.post('request-url', { 'message' : message });
Run Code Online (Sandbox Code Playgroud)
我也尝试将数据作为字符串(具有相同的结果):
$http.post('request-url', "message=" + message);
Run Code Online (Sandbox Code Playgroud)
当我以下列格式使用它时它似乎正在工作:
$http({
method: 'POST',
url: 'request-url',
data: "message=" + message,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
Run Code Online (Sandbox Code Playgroud)
但有没有办法用$ http.post()来做 - 并且我总是必须包含标题才能使它工作?我相信上面的内容类型是指定发送数据的格式,但我可以将其作为javascript对象发送吗?
我有一个Web API服务调用,用于更新用户的首选项.不幸的是,当我从jQuery ajax调用调用此POST方法时,请求参数对象的属性始终为null(或默认值),而不是传入的内容.如果我使用REST客户端调用相同的方法(我使用Postman) ,它工作得很漂亮.我无法弄清楚我做错了什么,但希望有人见过这个.这很简单......
这是我的请求对象:
public class PreferenceRequest
{
[Required]
public int UserId;
public bool usePopups;
public bool useTheme;
public int recentCount;
public string[] detailsSections;
}
Run Code Online (Sandbox Code Playgroud)
这是UserController类中的控制器方法:
public HttpResponseMessage Post([FromBody]PreferenceRequest request)
{
if (request.systemsUserId > 0)
{
TheRepository.UpdateUserPreferences(request.UserId, request.usePopups, request.useTheme,
request.recentCount, request.detailsSections);
return Request.CreateResponse(HttpStatusCode.OK, "Preferences Updated");
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "You must provide User ID");
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的ajax电话:
var request = {
UserId: userId,
usePopups: usePopups,
useTheme: useTheme,
recentCount: recentCount,
detailsSections: details
};
$.ajax({
type: "POST",
data: request,
url: …Run Code Online (Sandbox Code Playgroud)