Узел «TypeError: path.substring не является функцией», js, когда я пытаюсь прочитать json, отправленный с POST - PullRequest
0 голосов
/ 17 мая 2019

Я настраиваю веб-сервер, используя Node.Js, и делаю POST-запрос на вход в систему из сценария javascript (используя метод JQuery% .post ()).Я не понимаю, в чем проблема, но я почти уверен, что файл JSON, отправленный с данными, не читается сервером правильно, потому что когда я использую значения моего файла JSON, они не определены

I 'используя Node.js на моем компьютере с Windows 10 для ответа на запросы POST и GET

на стороне сервера:

var port = 8001;
const express = require('express');
const path = require('path');
const app = express();
const bodyParser = require('body-parser');

app.use('/', express.static('client'));
app.use(bodyParser.json());
app.post('/login',function(req,res){
    var username = req.body.email;
    var password = req.body.password;
        \\This returns "login successful undefined undefined"
    console.log('login successful ' + username + " " + password + "\n") ;
    var data = {
        email: username,
        password: password
    }
    res.sendFile(data);
})

на стороне клиента

function login(){
    var em = document.getElementById("emailForm").value;
    var psw = document.getElementById("passwordForm").value;

    var account = {
        "email": em,
        "password": psw
    }
    console.log(account.email + " : " + account.password);
    document.cookie = account;
    $.ajax({
        url: "http://localhost:8001/login",
        type: "POST",
        crossDomain: true,
        data: JSON.stringify(account),
        dataType: "json",
        success: function (response) {
            var resp = JSON.parse(response)
            alert(resp.status);
        },
        error: function (xhr, status) {
            alert("error:\nStatus: " + status + "\nXHR: " + xhr);
        }
    });
}

сообщение об ошибке на стороне сервераis:

TypeError: path.substring не является функцией export.isAbsolute (C: \ Users \ 39334 \ OneDrive \ University \ DA DARE \ Programmazione web e mobile \ Progetto \ web-app \ node_modules \ express\ lib \ utils.js: 59: 23)

отображается на терминале nodejs

1 Ответ

0 голосов
/ 17 мая 2019

Вы получаете сообщение об ошибке, потому что вы используете res.sendFile, который требует от вас указать абсолютный URL-адрес файла.

Поскольку вы пытаетесь ответить с помощью JSON, вы можете использовать это вместо:

res.json(data)

Кроме того, вам нужно добавить contentType к вашему $.ajax() вызову, чтобы сообщить серверу, что вы отправляете JSON:

$.ajax({
  // ...
  contentType: "application/json",
  // ...
}

Надеюсь, это поможет.

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