2016-03-30 6 views
0

Я пытаюсь отправить данные формы через ajax на сервер nodejs. Ранее задавали вопрос об этом post.Невозможно отправить данные формы на сервер (nodejs) с помощью ajax

Вот что мой код выглядит следующим образом:

<div id="inputid" style="width: 400px; height:400px"> 
    <p> Please enter a value between -90 and 90 for lat, and -180 and 180 before hitting 
     submit.</p> 
    <form id="sendCoordinates" action="http://localhost:8080/geodata" method="post"> 
    MinLat: <input type="text" name="MinLat" value="15" id="minlat"><br> 
    MaxLat: <input type="text" name="MaxLat" value="25" id="maxlat"><br> 
    MinLong: <input type="text" name="MinLong" value="-10" id="minlong"><br> 
    MinLong: <input type="text" name="MaxLong" value="120" id="maxlong"><br> 
    <input type="submit" value="submit" id="s1"> 
    </form> 

<script> 
$(document).ready(function() { 
    console.log("hi hi"); 
    $("#sendCoordinates") 
     .on('submit', function(e) { 
      e.preventDefault(); 
      var $form = $(e.target), 
       formData = new FormData(), 
       params = $form.serializeArray(); 

      $.each(params, function(i, val) { 
       // console.log(val); 
       formData.append(val.name, val.value); 
      }); 

      $.ajax({ 
       url: $form.attr('action'), 
       data: formData, 
       cache: false, 
       contentType: false, 
       processData: false, 
       type: 'POST', 
       success: function(result) { 
        console.log("hi helo"); 
       } 
      }); 
     }); 
}); 
</script> 

</div> 

Мой стороне сервера код выглядит следующим образом:

var express = require("express"); 
var path = require("path"); 
var bodyParser = require("body-parser"); 

var app = express(); 
app.use(express.static(__dirname + "/public")); 
app.use(bodyParser.json()); 

// Initialize the app. 
var server = app.listen(process.env.PORT || 8080, function() { 
    var port = server.address().port; 
    console.log("App now running on port", port); 
    }); 

// for debugging purposes, just logging the request to check 
// if request received 

app.post("/geodata", function(req, res) { 
    console.log("hey"); 
    console.log(req.body); 
    res.send("hi back!"); 
}); 

Я пытаюсь это, но я не могу отправить форму успешно, и на нажимаю submit, я получаю «эй» и пустой {} как зарегистрированный вывод. Я не могу зарегистрировать formData на стороне клиента, независимо.

Может кто-нибудь указать, что я могу делать неправильно?

+0

Для начала '$ (sendCoordinates)' должно быть, должно быть '$ (" # sendCoordinates ")'. – Pointy

+0

@ Великолепное спасибо за указание на это. К сожалению, это не устраняет проблему. :( – newenthusiast

+0

Где вы ожидаете, что произойдет событие «успеха»? Если вы хотите обработать событие «отправить», вы должны передать это вместо '.on()'. – Pointy

ответ

0

Вы не присвоили formformData(), поэтому вы не отправляете на сервер никаких данных.

var myForm = $('#sendCoordinates')[0]; 
var formData = new FormData(myForm); 
+0

Это имеет смысл - однако теперь я даже не вижу ничего, что было бы отправлено на сервер с этим изменением:/ – newenthusiast

+0

log 'formData' после заполнения и посмотреть, пуст он или нет? –

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