2016-03-17 3 views
1

Я пытался узнать следующее через учебник «Приложение CRUD с AngularJs, Node js, express js, Bootstrap, EJS, MySQL» на Shiva Adhikari, когда я понял, что я был застрял в части 5 учебника.

Моя проблема

О представлении формы, чтобы создать категорию продукта, консоль браузера сообщает следующую ошибку

network result

header content #1

header content #2

response

Мой код, который вызывается, когда форма была отправлена ​​

angular.module("productCategoryModule") 
    .factory("productCategoryService", productCategoryService); 

productCategoryService.$inject = ['$http']; 

function productCategoryService($http) { 
    return { 

    createProductCategory: function(productCategory) { 

     return $http.post('/createProductCategory', { 
     categoryName: productCategory.categoryName, 
     categoryDetails: productCategory.categoryDetails 
     }); 

     /* return $http({ 
      method: 'POST', 
      url: '/createProductCategory', 
      data: { 
        'categoryName' : productCategory.categoryName, 
        'categoryDetails' : productCategory.categoryDetails 
       }, 
      headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
     });*/ 
    }, 

    getAllProductCategories: function() { 
     return $http.get('/getAllProductCategory'); 
    } 

    }; 
} 

HTML код

<% include layout %> 

    <div class="panel panel-info"> 
    <div class="panel-heading"> 
     <h1 class="panel-title"> <%=title %></h1> 
    </div> 

    <div class="panel-body"> 
     <div class="container" data-ng-cloak data-ng-app="productCategoryModule" data-ng-controller="productCategoryController"> 

     <form class="navbar-form navbar-left" role="search" method="post" name="formProductCategory"> 
      <div class="row"> 
      <div class="form-group"> 
       <label for="productCategory">Product Category Name</label> 
       &nbsp;&nbsp; 

       <input type="text" class="form-control" placeholder="Please Enter Product Category" name="productCategory" id="productCategory" ng-model="productCategory.categoryName" style="width:100%" required> 
      </div> 
      </div> 
      <div class="row"> 
      <div class="form-group"> 
       <label for="productDetails">Product Category Details</label> 
       <textarea class="form-control" placeholder="Please Enter Product Category Details" name="productDetails" id="productDetails" rows="5" cols="30" ng-model="productCategory.categoryDetails" style="width:100%" required></textarea> 
      </div> 
      </div> 
      <div>&nbsp;</div> 
      <div class="row"> 
      <div class="form-group" style="padding-left:40%;"> 
       <button type="button" class="btn btn-primary" ng-click="createProductCategory(productCategory)">Create Product Category</button> 
      </div> 
      </div> 
     </form> 
     </div> 
    </div> 
    </div> 

    <script src="/bower_components/angular/angular.js"></script> 
    <script src="../../js/app/productCategory/productCategoryModule.js"></script> 
    <script src="../../js/app/productCategory/productCategoryService.js"></script> 
    <script src="../../js/app/productCategory/productCategoryController.js" </script> 

productCategoryRouteConfigurator.js

function productCategoryRouteConfig(app) { 
    this.app = app; 
    this.routeTable = []; 
    this.init(); 
} 

productCategoryRouteConfig.prototype.init = function() { 
    var self = this; 

    this.addRoutes(); 
    this.processRoutes() 
} 

productCategoryRouteConfig.prototype.processRoutes = function() { 
    var self = this; 

    self.routeTable.forEach(function (route) { 
     if (route.requestType == 'get') { 
      self.app.get(route.requestUrl, route.callbackFunction); 
     } else if (route.requestType == 'post') { 
      self.app.get(route.requestUrl, route.callbackFunction); 
     } else if (route.requestType == 'delete') { 

     } 
    }) 
} 

productCategoryRouteConfig.prototype.addRoutes = function() { 
    var self = this; 

    self.routeTable.push({ 
     requestType: 'get', 
     requestUrl: '/createProductCategory', 
     callbackFunction: function (request, response) { 
      response.render('createProductCategory', { 
       title: "Create a Product Category" 
      }); 
     } 
    }); 

    self.routeTable.push({ 
     requestType: 'post', 
     requestUrl: '/createProductCategory', 
     callbackFunction: function (request, response) { 
      var productCategoryDao = require('../model/dao/productCategoryDao.js'); 
      console.log(request.body) 

      productCategoryDao.productCategoryDao.createProductCategory(request.body, function (status) { 
       response.json(status); 
       console.log(status); 
      }); 
     } 
    }); 

    self.routeTable.push({ 
     requestType: 'get', 
     requestUrl: '/viewProductCategory', 
     callbackFunction: function (request, response) { 
      response.render('viewProductCategory', { 
       title: "View Product Category" 
      }); 
     } 
    }); 

    self.routeTable.push({ 
     requestType: 'get', 
     requestUrl: '/createProduct', 
     callbackFunction: function (request, response) { 
      response.render('createProduct', { 
       title: "Create a Product" 
      }); 
     } 
    }); 

    self.routeTable.push({ 
     requestType: 'get', 
     requestUrl: '/viewProduct', 
     callbackFunction: function (request, response) { 
      response.render('viewProduct', { 
       title: "View a Product" 
      }); 
     } 
    }); 

    self.routeTable.push({ 
     requestType: 'get', 
     requestUrl: '/getAllProductCategory', 
     callbackFunction: function (request, response) { 
      var productCategoryDao = require('../model/dao/productCategoryDao.js'); 

      productCategoryDao.productCategoryDao.getAllProductCategory (function (productCategories) { 
       console.log(productCategories); 
       response.json({ productCategories : productCategories }) 
      }); 
     } 
    }); 

    self.routeTable.push({ 
     requestType: 'get', 
     requestUrl: '/editProductCategory/:productCategoryId', 
     callbackFunction: function (request, response) { 
      response.render('editProductCategory', { 
       title: "Edit Product Category" 
      }); 
     } 
    }); 
} 

module.exports = productCategoryRouteConfig; 

Я пробовал как реализацию $ http, так и пробовал решение CORS.

следующие должности и предложил сообщения были переданы перед созданием этого вопроса, поскольку они не решить мою проблему: SO post 1, SO post 2, SO post 3, SO post 4

+1

Вы можете показать маршруты в 'node.js'? Я чувствую, что ваш метод не подходит там – Thabung

+0

@redA добавил код файла js в OP –

ответ

1

ошибки я должна была небольшими неправильным в моем productCategoryRouteConfigurator. JS

Я использовал

else if (route.requestType == 'post') { 
    self.app.get(route.requestUrl, route.callbackFunction); 
} 

вместо

else if (route.requestType == 'post') { 
    self.app.post(route.requestUrl, route.callbackFunction); 
} 

Это решило мою проблему.

Thankyou @redA для указания на то, что в файле маршрута могут быть проблемы.