【发布时间】:2017-02-13 06:43:51
【问题描述】:
好的,所以我有一个非常简单的应用程序,create-react-app。现在我正在使用 ExpressJS 来处理我使用 $.ajax() 方法在 componentWillMount() 方法。
所以所有的 React 前端都有一个简单的表单,有 1 个输入字段并像这样提交:
import React, { Component } from 'react';
import $ from 'jquery';
import './App.css';
class App extends Component {
componentDidMount(){
$('form').on('submit', function(e) {
e.preventDefault();
$.ajax({
url: '/api',
type: 'post',
data: $('form').serialize(),
dataType: 'json',
success: function(data) {
console.log('successful ajax request made!');
}
});
});
}
render() {
return (
<div className="App">
<form method="POST">
<input type="text" name="title" />
<input id="submit" type="submit" />
</form>
</div>
);
}
}
export default App;
现在我的特快路线是这样的:
var express = require("express");
var router = express.Router();
router.post("/api", function(req, res, next){
console.log(req.body);
});
module.exports = router;
问题
当使用 npm start 运行 create-react-app 时,它会转到 localhost:3000 到 Webpack 本地开发服务器,当我使用 node server/app.js 在我的服务器目录中关闭我的 app.js 会转到 localhost:3001 因为它们无法在同一个端口。
因此,我无法进行正确的 API 调用,而不会收到表明 POST 请求失败的错误。
所以现在的黄金问题是如何从本地服务器的 2 个不同端口进行 API 调用?
如果您需要有关我的代码的更多信息,我非常乐意发布。非常感谢您的帮助,谢谢!
【问题讨论】:
-
作为我回答的旁注,我建议您为包
fetch更改 jQuery(因为它的大小),因为它是用于尝试统一XMLHttpRequest调用的标准化 API在现代浏览器中,使用 polyfill 支持旧浏览器。
标签: javascript node.js api express create-react-app