2016-06-20 3 views
0

Я сделал restful API в папке с именем (rest), она соединяется с портом 3000 на моем localhost по ..... http://localhost:3000/api/products. также я сделал приложение регистрации jQuery в папке с именем (logs), выполняющей вызов Ajax для извлечения данных из API, добавления новых пользователей и т. Д. Я запускаю свое приложение в браузере-синхронизации, которое выполняется на другом порту, и поэтому далеко я не могу подключиться к API, потому что я не знаю, к какому пути должен подключаться. пожалуйста, помогите мне в двух вещах:jQuery ajax от localhost: 3000 api

  1. где разместить эти две папки (отдых), (журналы)?
  2. Какой URL-адрес API (работает на порту: 3000)?

моего JQuery приложение код:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<!--------------------------- Meta tags --------------------> 
<meta charset="UTF-8"> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<title>Logs</title> 



    <!-- jQuery --> 
    <script src="https://code.jquery.com/jquery-2.2.3.min.js" integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script> 
    <!-- jQuery UI --> 
    <script src="https://code.jquery.com/ui/1.12.0-rc.2/jquery-ui.min.js" integrity="sha256-55Jz3pBCF8z9jBO1qQ7cIf0L+neuPTD1u7Ytzrp2dqo=" crossorigin="anonymous"></script> 

    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 
    <!-- Optional theme --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> 
    <!-- Latest compiled and minified JavaScript --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> 
    <!-- Jquery css ui --> 
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.0-rc.2/themes/smoothness/jquery-ui.css"> 
    <!-- My stile link --> 
    <link rel="stylesheet" type="text/css" href="css/style.css"> 
</head> 

<body> 
    <div class="row"> 
     <div class="col-md-6"> 
      <table class="table table-striped"> 
       <thead> 
       <tr> <th>ID</th> <th>First name</th> <th>Last name</th> </tr> 
       </thead> 
       <tbody class="user"> 

       </tbody> 
      </table> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col-md-3"> 
      <button class="btn btn-success getUsers"> Get Users </button> 
      <form class= "form-inline"> 
       <input id="id" class="form-group" placeholder="ID"> 
       <input id="firstName" class="form-group" placeholder="First name"> 
       <input id="lastName" class="form-group" placeholder="Last name"> 
       <button class="btn btn-success addUsers"> Add a user</button> 
      </form> 
     </div> 
    </div> 
    <script> 
     var $user = $('.user'); 
     var $id = $('#id'); 
     var $firstName = $('#firstName'); 
     var $lastName = $('#lastName'); 
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     $('.getUsers').click(function(){ 
      $.ajax({ 
       type:"GET", 
       url: '/api/products', 
       dataType: 'json', 
       success: function(users){ 
        $.each(users, function(i, user){ 
         $user.append('<tr><td>'+ user.id +'</td> <td>'+ user.firstName +'</td> <td>' +user.lastName + '</td></tr>'); 
        }); 
       }, 
       error: function(){ 
        alert('error'); 
       } 
      }); 
     }); 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

     $('.addUsers').click(function(){ 
      var $newUser = { 
       id: $id.val(), 
       firstName: $firstName.val(), 
       lastName: $lastName.val() 
      }; 
      $.ajax({ 
       type:"POST", 
       url: '/api/products', 
       dataType: 'json', 
       data: $newUser, 
       success: function(newUser){ 
         $user.append('<tr><td>'+ newUser.id +'</td> <td>'+ newUser.firstName +'</td> <td>' +newUser.lastName + '</td></tr>'); 
       }, 
       error: function(){ 
        console.log('error'); 
       } 
      }); 
     }); 
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    </script> 
</body> 
</html> 

моего апи код:

/*************** server.js ************************/

// DEPENDENCIES 
var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 

// MongoDB 
mongoose.connect('mongodb://localhost/testdb'); 

// EXPRESS 
var app = express(); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

// ROUTES 
app.use('/api', require('./routes/api')); 

// START SERVER 
app.listen(3000); 
console.log('API is working on port 3000,yes'); 

/**************** api .js *************** **************/

// DEPENDENCIES 
var express = require('express'); 
var router = express.Router(); 

// MODELS 
var Product = require('../models/product'); 

// ROUTES 
Product.methods(['get', 'put', 'post', 'delete']); 
Product.register(router, '/products'); 

// RETURN ROUTER 
module.exports = router; 

/************* товар.js *********** *******/

// DEPENDENCIES 
var restful = require('node-restful'); 
var mongoose = restful.mongoose; 

// SCHEMA 
var productSchema = new mongoose.Schema({ 
    id: Number, 
    firstName: String, 
    lastName: String, 
    mark: Number 
}); 

// return model 
module.exports = restful.model('Products', productSchema); 

примечание: i`m слишком новый для бэкэнд.

Заранее спасибо.

+0

ok, я заменен inde x.html, который использует jquery ajax .. внутри rest/routes на одном уровне api.js, я также изменил api-порт на 3002, потому что 3000 был занят браузером-синхронизацией, теперь я получаю эту ошибку: XMLHttpRequest не может загрузить HTTP: // локальный: 3002/API/продукты. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Поэтому исходный адрес http: // localhost: 3000 'не допускается. –

ответ

1

Ваш сервер должен быть включен CORS Чтобы сделать это, вы можете использовать CORS Module

Установите этот модуль с npm install cors, добавить к зависимостям var cors = require('cors');

И просто изменить ваш app.use('/api', require('./routes/api')); к app.use('/api', cors(), require('./routes/api'));

Если вы хотите для включения CORS для всех маршрутов, после включения модуля написать app.use(cors())

Смежные вопросы