我需要将表单数据发布到URL,这是一个webapi,方法是post
var surveyData = {
Name: xyz,
SetReminder: 'false',
NoOfReminder: '0',
StartDate: 'xyz',
EndDate: 'xyz',
Language: 'eng-us',
Duration: '1',
ApplicationName: 'xyz',
SurveyTypeName: 'zxy'
};
我编写了下面的代码,它调用了wbeapi的post方法但该函数能够发送数据但是post方法无法读取使用angular js发送的数据。
function(surveyData) {
return $http.post(URL , surveyData,{
headers: { 'Content-Type': 'multipart/form-data' }
});
答案 0 :(得分:1)
使用:
var data = HttpContext.Current.Request.Form["surveyData"];
从多部分表单中接收json数据。
如果您的多部分表单包含文件,那么要使用这些文件:
System.Web.HttpFileCollection postedfiles = System.Web.HttpContext.Current.Request.Files;
另请注意,不要在控制器操作方法中使用任何参数。
确保导入这些名称空间:
using System.Net.Http;
using System.Web;
using System.Web.Http;
编辑:
修改您的javascript代码。
var data = new FormData();
data.append("surveyData", angular.toJson(surveyData));
如果要添加图像/其他,可以使用代码添加图像 下面。
//data.append("uploadedFile", $scope.files[0]);
所以你的代码将是:
function(surveyData) {
return $http.post(URL , data,{
headers: { 'Content-Type': 'multipart/form-data' }
});
现在您将能够使用
接收json数据var data = HttpContext.Current.Request.Form["surveyData"];
和images / otherfiles(如果有)使用
System.Web.HttpFileCollection postedfiles = System.Web.HttpContext.Current.Request.Files;
答案 1 :(得分:0)
如果web api是Multipart / form-data,那么您需要在下面的表单中创建键值对,以便创建多部分表单数据。
var objFormData = new FormData();
for (var key in surveyData)
objFormData.append(key, surveyData[key]);
然后您需要使用以下代码发送创建的多部分表单数据:
return $http.post(URL, objFormData, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
});