作为参数的数据格式数组 angularjs
Array of data format as parameter angularjs
我在 Symfony 中有一个服务器,我在其中通过 AngularJS 客户端使用函数。此函数请求一个数据数组作为参数。
属于那种类型:
[nom => test, provenance => test, numero => 12 ]
我测试服务器时用Postman得到的代码:
var form = new FormData();
form.append("form[nom]", "test");
form.append("form[provenance]", "test");
form.append("form[numero]", "12");
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:8000/api/produits",
"method": "POST",
"headers": {
"authorization": "ey.....YMpJJA",
"accept": "application/json",
"cache-control": "no-cache",
"postman-token": "0dd5a3...ad03a6d3"
},
"processData": false,
"contentType": false,
"mimeType": "multipart/form-data",
"data": form
}
$.ajax(settings).done(function(response) {
console.log(response);
});
我现在尝试在 AngularJS 中重现相同的结果,但在我的应用程序端,并通过 HTML 中的表单发送我的数据,但问题是我无法检索我在表格中输入的数据。
服务器端:
/**
* @Route ("/api/produits", name="api_produit_add")
* @Method("POST")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function addAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$produit = $this->getProduit();
$form = $this->createFormBuilder($benevole, array('csrf_protection' => false))
->add('nom', TextType::class, array('required' => true))
->add('provenance', TextType::class, array('required' => true))
->add('numero', TextType::class, array('required' => true))
->getForm();
if ($request->isMethod('POST')) {
$form->submit($request->request->get($form->getName()));
if ($form->isValid() && sizeof($request->request->get('ingroupe'))) {
$produit->setPass(sha1($form->getData()->getPass()));
$em = $this->getDoctrine()->getManager()->flush();
return new JsonResponse('ok');
} else {
$errors = [];
foreach ($form->getErrors(true, true) as $error) {
$errors[] = $error->getOrigin()->getName() . ' : ' . $error->getMessage();
}
$response = new JsonResponse($errors);
$response->setStatusCode(Response::HTTP_NOT_ACCEPTABLE);
return $response;
}
}
$response = new JsonResponse('only POST method');
$response->setStatusCode(Response::HTTP_BAD_REQUEST);
return $response;
}
目前,这是我可以在我的应用程序方面做的事情:
var add = function(form){
var token = window.localStorage.getItem('token');
var formdata = new FormData();
for (var key in form) {
console.log(key, form[key]);
formdata.append(key, form[key]);
}
$ionicLoading.show();
return $http({
method : 'POST',
url : API_ENDPOINT.url + '/produits',
data : formdata,
transformRequest: angular.indentity,
headers : {Authorization : 'Bearer ' + token,'Content-Type': undefined, 'Accept': 'application/json' },
}).then(function(result) {
console.dir(result.data);
},function errorCallback(response) {
console.log(response);
});
};
在控制器中:
$scope.add = function () {
console.log($scope.form);
LoginService.edit($scope.form).then(function(response){
//success callback
console.log(response);
//do something with the data
},function(response){
//error callback
});
};
所以我想知道如何以服务器请求的格式准确转换我发送的内容。
哪个 returns 我在请求有效载荷中这样做:
Content-Disposition:表单数据;名字="nom"
但我正在寻找的格式是:
Content-Disposition:表单数据; 姓名="form[nom]"
我正在考虑想法..si 有人可以帮助我 ^^
要获得您正在寻找的结果,您应该这样做:
var formdata = new FormData();
for (var key in form) {
console.log(key, form[key]);
formdata.append('form['+key+']', form[key]);
}
希望对你有所帮助
我在 Symfony 中有一个服务器,我在其中通过 AngularJS 客户端使用函数。此函数请求一个数据数组作为参数。 属于那种类型:
[nom => test, provenance => test, numero => 12 ]
我测试服务器时用Postman得到的代码:
var form = new FormData();
form.append("form[nom]", "test");
form.append("form[provenance]", "test");
form.append("form[numero]", "12");
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:8000/api/produits",
"method": "POST",
"headers": {
"authorization": "ey.....YMpJJA",
"accept": "application/json",
"cache-control": "no-cache",
"postman-token": "0dd5a3...ad03a6d3"
},
"processData": false,
"contentType": false,
"mimeType": "multipart/form-data",
"data": form
}
$.ajax(settings).done(function(response) {
console.log(response);
});
我现在尝试在 AngularJS 中重现相同的结果,但在我的应用程序端,并通过 HTML 中的表单发送我的数据,但问题是我无法检索我在表格中输入的数据。
服务器端:
/**
* @Route ("/api/produits", name="api_produit_add")
* @Method("POST")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function addAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$produit = $this->getProduit();
$form = $this->createFormBuilder($benevole, array('csrf_protection' => false))
->add('nom', TextType::class, array('required' => true))
->add('provenance', TextType::class, array('required' => true))
->add('numero', TextType::class, array('required' => true))
->getForm();
if ($request->isMethod('POST')) {
$form->submit($request->request->get($form->getName()));
if ($form->isValid() && sizeof($request->request->get('ingroupe'))) {
$produit->setPass(sha1($form->getData()->getPass()));
$em = $this->getDoctrine()->getManager()->flush();
return new JsonResponse('ok');
} else {
$errors = [];
foreach ($form->getErrors(true, true) as $error) {
$errors[] = $error->getOrigin()->getName() . ' : ' . $error->getMessage();
}
$response = new JsonResponse($errors);
$response->setStatusCode(Response::HTTP_NOT_ACCEPTABLE);
return $response;
}
}
$response = new JsonResponse('only POST method');
$response->setStatusCode(Response::HTTP_BAD_REQUEST);
return $response;
}
目前,这是我可以在我的应用程序方面做的事情:
var add = function(form){
var token = window.localStorage.getItem('token');
var formdata = new FormData();
for (var key in form) {
console.log(key, form[key]);
formdata.append(key, form[key]);
}
$ionicLoading.show();
return $http({
method : 'POST',
url : API_ENDPOINT.url + '/produits',
data : formdata,
transformRequest: angular.indentity,
headers : {Authorization : 'Bearer ' + token,'Content-Type': undefined, 'Accept': 'application/json' },
}).then(function(result) {
console.dir(result.data);
},function errorCallback(response) {
console.log(response);
});
};
在控制器中:
$scope.add = function () {
console.log($scope.form);
LoginService.edit($scope.form).then(function(response){
//success callback
console.log(response);
//do something with the data
},function(response){
//error callback
});
};
所以我想知道如何以服务器请求的格式准确转换我发送的内容。
哪个 returns 我在请求有效载荷中这样做: Content-Disposition:表单数据;名字="nom"
但我正在寻找的格式是: Content-Disposition:表单数据; 姓名="form[nom]" 我正在考虑想法..si 有人可以帮助我 ^^
要获得您正在寻找的结果,您应该这样做:
var formdata = new FormData();
for (var key in form) {
console.log(key, form[key]);
formdata.append('form['+key+']', form[key]);
}
希望对你有所帮助