2015-12-28 3 views
0

Я пытаюсь получить ajax для работы с узлом js. Его первый раз, работая с ajax, поэтому я пытался проверить его, используя консоль, чтобы проверить, что она работает, но каждый раз, когда я пытаюсь, я не получаю ответа на консоль.Не могу получить jquery AJAX для работы узла js express

Вот мой код.

<script> 

function getMessage() { 

    var data = $("#messageselect").val() 

    $.ajax({ 
     url: "/message", 
     type: "POST", 
     data: JSON.stringify(data) 
     dataType: 'json', 
     success: function(data) { 
      console.log(data); 
     } 
     error : function(err) 
     console.log("error fetching message"); 
    }); 
} 
</script> 

сервер

app.post('/message', function(req, res) { 

    console.log(JSON.stringify(req.body)); 


    Message.findOne({ 'page.message' : req.data }, function(err, message) { 

     if(err) 
      throw err; 

     res.send(message); 
    }); 
}); 

HTML

<form method="POST"> 
         <select multiple="multiple" class="messageselect" onchange="getMessage()" id="messageselect"> 
          <% if(message) { %> 
          <% for(i=messagecount-1;i>=0;i--) { %> 
          <option value="<%= message[i].page.message %>">From: <%= message[i].page.username %> Message: <%= message[i].page.messagetitle %></option> 
          <% } %> 
          <% } %> 
         </select><br><br><br> 
        </form> 
+0

Если вы имеете в виду JQuery локально убедиться, выражающие статическое промежуточное программное обеспечение включено –

+0

текущий код в первом блоке имеет синтаксическая ошибка для обратного вызова 'error'. – Sirko

+0

Конкретно, что именно не работает? – adeneo

ответ

0

Не могли бы вы попробовать $http как ниже формате,

$http.post(//url , //data) 
    .success (function() {}) 
    .error(function() {}); 
+0

Разве это не угловой код? – Sirko

+0

да его угловая определенная – SakthiSureshAnand

+0

нормально я попробую это – jcwalker2006

3

Я предполагаю, что это один из опечаток ошибка в коде:

var = data $("#messageselect").val() 
//--^^--------------------------------worng way to assign. 

jQuery.ajax() необходим объект для отправки:

var data = { data : $("#messageselect").val() }; 

и на сервере, вы можете использовать req.body, чтобы получить размещенные данные:

console.log(req.body.data); 

Примечание:

Для этого у вас должен быть body-parser, поэтому обязательно включите его в конфигурацию кода выше.

+0

На самом деле существует более одной опечатки, как в отсутствующих запятых и курчавых. Кроме того, OP, вероятно, нуждается в bodyparser для этого? – adeneo

+0

@adeneo совершенно. bodyParser требуется, и, как я упомянул, один из typo_ выше. – Jai

0
$.ajax({ 
    url: "/message", 
    type: "POST", 
    data: JSON.stringify(data) 
    dataType: 'json', 
    success: function(data) { 
     console.log(data); 
    } 
    error : function(err) 
    console.log("error fetching message"); 
}); 

Они отсутствуют скобки в обработчик ошибок

error : function(err) { 
     console.log("error fetching message"); 
} 

Возможно не правильный путь, чтобы вы также можете попробовать:

$.ajax({ 
    url: '/message', 
    type: 'POST', 
    dataType: 'JSON', 
    data: {JSON.stringify(data)}, 
    success: function(data) { 
     console.log(data); 
    } 
    error : function(err) { 
     console.log("error fetching message"); 
    } 
}); 

Вы когда-нибудь пробовали использовать curl для POST-то на сервер?

+0

no never try curl, чтобы опубликовать что-то – jcwalker2006

+0

Попробуйте использовать консоль отладки браузера, чтобы следовать вашему коду. – Esta

0

В дополнение к существующим ответам вы также должны пройти надлежащую Content-Type с запросом AJAX:

$.ajax({ 
    url: "/message", 
    type: "POST", 
    data: JSON.stringify(data) 
    dataType: 'json', 
    contentType: 'application/json' //here it is 
    //... 
}); 
Смежные вопросы