Как отправить ответ на почтовый запрос ajax в express node.js? [Ответил] - PullRequest
0 голосов
/ 26 марта 2019

Я делаю простой проект для отработки практики js вместе с Jquery Ajax. Итак, у меня есть пост-запрос ajax, который отправляет некоторые данные на сервер nodejs и ждет ответа. На стороне сервера у меня есть код, который читает данные и что-то с ними делает. Это отлично работает. Но когда я пытаюсь отправить ответ обратно в ajax, страница меняется и отображает ответ в виде простого текста. Я хочу сделать что-то с ответом на стороне ajax. Извините, если мне не ясно, но надеюсь, что вы понимаете, когда читаете код.

JQuery Ajax код:

$("submitBtn").on("click", e=>{
        e.preventDefault();
        $.ajax({
            url: "/getCity",
            type: "POST",
            data: `city=${cityName}&country=${countryName}`,
            success: function(data){
                console.log(data);
            }
        });
    });

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

app.post("/getCity", (req, res)=>{
    //a promise
    .then(cityID=>{
        res.status(200).send(cityID.toString());
        });
});

HTML-код:

<form method="post" action="/getCity">
    <input/>
    <input/>
    <button id="submitBtn" type="submit">Search Weather</button>
</form>

Я включил html-код, потому что я не знаю, нужно ли вводить method="post" action="/getCity" даже при отправке ajax post-запроса. Я надеюсь, что вы поможете мне с этим и, если возможно, HTML. Заранее спасибо. ПРИМЕЧАНИЕ. Этот вопрос - воссоздание другого вопроса, который я задавал ранее. Я сделал это, потому что он был помечен как дубликат, но после этого на него ответил другой пользователь, только в комментарии, который попросил сделать это, чтобы в будущем это было полезно другим.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Пожалуйста, используйте его следующим образом в вашем HTML-файле. Должен решить вашу проблему

<body>
    <form method="post" id="cityform">
        <button id="submitBtn" type="submit">Search Weather</button>
    </form> 
</body>

<script>
    $("#cityform").submit(function(e) {
        e.preventDefault();
        $.ajax({
            url: "https://localhost:8443/getCity",
            type: "POST",
            data: {
                'city': 'pune',
                'country': 'India',
            },
            success: function(data){
                console.log(data);
            }
        });
    });

</script>

Запрос на публикацию должен выглядеть следующим образом, я вызываю некоторую функцию как findCity, вам не нужно ее использовать.

app.post("/getCity", (req, res) => {
    var cityname= req.body.city;
    var country= req.body.country;
    city.findCity(cityname, country).then((cityID) => {
        res.status(200).send({ cityID: '123' });
    }).catch((e) => {
        res.status(400).send(e);
    });
});
0 голосов
/ 26 марта 2019

В дубликате они обсуждают, как может сработать селектор DOM до того, как элемент окажется на странице. Это не совсем ваша проблема. Вам не хватает # части вашего селектора (так как вы выбираете по идентификатору). Измените первую строку вашего AJAX на $ ("# submitBtn"). On ("click", e => {и это будет работать. Поскольку это было ошибочно помечено как дубликат, я не смог опубликовать это как ответ. Если это решение работает, пожалуйста, создайте свой вопрос еще раз, предоставьте мой комментарий в качестве ответа и примите его, чтобы другие могли воспользоваться им в будущем. @ Welkie

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