Я надеюсь, что это не глупый вопрос или дубликат, но мне кажется, что куда бы я ни посмотрел, можно найти другой ответ, и я не смог заставить ни один из них работать ...
С jQuery и PHP я могу делать следующее для отправки и получения данных между интерфейсом и сервером ->
$.post("logic.php", {
command: command
}, function(data, status) {
$("#output").html(data);
}); //jQuery (front-end)
if (isset($_POST['command'])) {
$command = $_POST['command'];
if ($command == 'about') {
echo 'about';
} else {
echo 'command not found';
}
} // PHP (back-end)
Связь работает и кажется довольно простой. Теперь я перехожу на Node.js, и мне очень трудно добиться того же эффекта. Я не получаю никаких ошибок, но похоже, что он вообще не общается ... Я пробовал много разных вещей, но вот то, что у меня есть сейчас ->
$.post("index.js", {
command: command
}, function(data, status) {
out(data); /* out is a function i made that puts the data on the page in a nice format */
}); // jQuery (front-end)
var express = require('express');
var bodyParser = require('body-parser')
var app = express();
// Javascript back-end
app.post('/', function (req, res, next) {
console.info(req.body) ;
}); // Should log command to the console but nothing at all happens
Я очень новичок в node.js, но хотел перейти с PHP, потому что слышал об отличных возможностях AJAX (на которых основано мое приложение) ... пожалуйста, помогите :)
@SLaks Он этим пользуется. @OP: Вы запрашиваете index.js, но вам нужен $.post("/", ...)
Вам также необходимо запустить сервер и указать пути.
Однако я не совсем понимаю, что вы имеете в виду под «отличными возможностями AJAX узла» ... AJAX реализуется на стороне клиента. node работает совсем иначе, чем PHP. Во-первых, хотя express поддерживает статические файлы, все остальное делается с помощью маршрутов; в основном это означает, что site.com/a/b с точки зрения клиента редко означает «файл b в папке a» на сервере.
Я знаю, что мне нужны bodyParser, express и запущенный сервер. У меня все это работает, я разместил только код для части AJAX. Следует ли мне пересмотреть и вставить весь свой код?
Вы прочитали мой первый комментарий? Вам нужен $.post("/", ...), так как это маршрут, который вы обрабатываете на стороне сервера.
@ChrisG Ваше решение в сочетании с Meghans действительно работает! Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы определяете bodyParser, но никогда не используете его. Вы должны добавить его в экспресс-конфигурацию.
app.use(bodyParser.urlencoded());
После этого req.body больше не будет undefined.
Я добавил это, но это дает мне ошибку «body-parser устаревший undefined расширенный: предоставить расширенный параметр». Это все еще не работает. Нужно ли мне что-нибудь с атрибутами успеха и ошибки?
@MichaelHoefler app.use(bodyParser.urlencoded({ extended: true }))
Вам необходимо установить промежуточное ПО bodyParser в свое приложение. Узнайте о том, как работает Express.