Передать массив данных в angularjs multipart - PullRequest
0 голосов
/ 24 мая 2018

У меня есть массив цветов и размеров, и некоторые другие данные, такие как product_name и images, я могу отправлять файлы изображений и product_name, но когда я присоединяю массив color_and_sizes, он говорит об ошибке 500

Вот мойКод: (Angularjs и Laravel Controller) В основном я хочу сохранить все детали в базе данных, но не могу сохранить детали цвета и размеров.

$scope.admin_add_product=function(){
	  var product_name=$scope.txtProductname;
	  var product_description=$scope.tarDescription;
	  var price=$scope.txtprice;
	  var unit_in_stock=$scope.txtunitinstock;
	  var unit_weight=$scope.txtweight;
	  var file = $scope.front_image;
	  var file2=$scope.back_image;
	  var file3=$scope.left_side_image;
	  var file4=$scope.right_side_image;
	  var main_image=$scope.main_image;
	  var large_image=$scope.large_image;
	  var category_id=$scope.selectedCategory.category_id;
	  var sub_category_id=$scope.selectedSubCategory.sub_category_id;
	  var sub_sub_category_id=$scope.selectedSubSubCategory.sub_sub_category_id;
	  var product_key=$scope.addProductOption;
	  var tags=$scope.txt_tags;
	  var aditional_information=$scope.txt_aditional_information;
	  var temp_color_and_size=[];
	  temp_color_and_size=$scope.color_and_size;
	  console.log(temp_color_and_size);
	  var uploadUrl = 'http://web.com/app/add_product';
	  fileUpload.uploadFileToUrl(file,file2,file3,file4,main_image,large_image, product_name,product_description,price,category_id,sub_category_id,sub_sub_category_id,unit_in_stock,unit_weight,product_key,tags,aditional_information ,temp_color_and_size, uploadUrl);
	  
	}
  
  /* ---------------------------------------------------- Color and Sizes -------------------------------------------------- */
			$scope.color_and_size=[];
			$scope.Add=function(){
				var c_and_s=[];
				c_and_s.color_name = document.getElementById('cl1').value;
				var s;
				if($scope.sizes!=null)
				{
					for(var i=0;i<$scope.sizes.length-1;i++)
					{
						if($scope.sizes[i+1]>=0 && $scope.sizes[i+1]<=9)
						{
							
						}
						else
						{
							if($scope.sizes[i+2]>=0 && $scope.sizes[i+2]<=9)
							{
								
							}
							else
							{
								$scope.sizes = $scope.sizes.substring(0, i+1);
							}
						}
					}
					console.log($scope.sizes);
					$scope.size=$scope.sizes.split(',');
					c_and_s.sizes=$scope.size;
				}
				$scope.color_and_size.splice(0,0,c_and_s);
				console.log($scope.color_and_size);
				document.getElementById('cl1').value="#000000";
				$scope.sizes="";
			}
      
      
      myApp.service('fileUpload', ['$http', function ($http) {
     this.uploadFileToUrl = function(file,file2,file3,file4,main_image,large_image,product_name,product_description,price,category_id,sub_category_id,sub_sub_category_id,unit_in_stock,unit_weight,product_key,tags,aditional_information,temp_color_and_size, uploadUrl){
		console.log(product_name);
		console.log(product_description);
		console.log(price);
		console.log(unit_in_stock);
		console.log(unit_weight);
		console.log(file);
		console.log(temp_color_and_size);
		console.log(product_key);
		console.log(tags);
		console.log(aditional_information);
		
		var payload = new FormData();
		payload.append("product_name", product_name);
		payload.append('product_description', product_description);
		payload.append('price', price);
		payload.append('unit_in_stock', unit_in_stock);
		payload.append('unit_weight', unit_weight);
		payload.append('file', file);
		payload.append('file2', file2);
		payload.append('file3', file3);
		payload.append('file4', file4);
		payload.append('main_image', main_image);
		payload.append('large_image', large_image);
		payload.append('product_key', product_key);
		payload.append('tags', tags);
		payload.append('aditional_information', aditional_information);
		payload.append('temp_color_and_size', temp_color_and_size);
		
		return $http({
			url: uploadUrl,
			method: 'POST',
			data: payload,
			//assign content-type as undefined, the browser
			//will assign the correct boundary for us
			headers: { 'Content-Type': undefined},
			//prevents serializing payload.  don't do it.
			transformRequest: angular.identity
		})
		.then(function (response){
			alert('Product Added Successfully');
			window.location = "http://web.com/add_product"
		   },function (error){
				
		   });
	}
}]);

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 24 мая 2018

Ваш вопрос мне не понятен, но я думаю, что проблема в том, что все свойства объекта formData, кроме temp_color_and_size, имеют строковый тип, а temp_color_and_size является объектом javascript.Это может решить вашу проблему.

payload.append('temp_color_and_size', JSON.stringify(temp_color_and_size);

Вы должны десериализовать строку JSON на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...