2017-05-04 10 views
0

Ich habe über dieses Problem über Stackoverflow gesucht, konnte aber keine Antwort bekommen, die mein Problem löst.jquery ajax post undefined

Dies ist sogar Beispielcode in meinem Buch node.js. Ich weiß nicht, warum das nicht funktioniert und ich möchte den Autor dieses Buches verklagen. Er gab mir viel Stress.

1]-Code in server.js

app.post('/products', function (request, response){ 

console.log(request.params); 
var name = request.params.name; 
var price = request.params.price; 
var item = { 
    name : name, 
    price : price 
}; 

items.push(item); 

response.send({ 
    message : 'Data pushed', 
    data : item 
    }); 
}); 

2]-Code in index.html

$('#post').click(function(){ 
    console.log($('#name').val()); 
    console.log($('#price').val()); 
    $.ajax({ 
     url:'/products', 
     type:'post', 
     dataType : 'text', 
     data : { 
      name : $('#name').val(), 
      price : $('#price').val() 
     }, 
     success : function(data){ 
      $('#output').val(data); 
     } 
    }); 
}); 

ich korrekte Daten sehen kann, die ich in #name und #price in der Konsole von Chrome setzen Browser von console.log. Aber ich kann keine Daten in server.js durch console.log (request.params) sehen. console.log (request.params), console.log (request.params.id), console.log (reqeust.params.price) alle gibt 'undefined' zurück Warum gibt es undefined zurück? Ich habe viele Dinge ausprobiert, die ich im Internet gesucht habe, aber nichts gelöst. Was ist das Problem?

+0

in index.html kann ich die Antwort von Push sehen. So sehe ich 'Daten geschoben', {} – HyeonWoo

+0

Ich meine, ich denke, Push funktioniert, aber Probleme mit seinen Daten senden – HyeonWoo

Antwort

0

Haben Sie in Ihrer Serverdatei Expess verwendet?

var app = express(); 
app.use(express.bodyParser()); 

Oder

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); // for parsing application/json 
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded 

In Server js Sie request.body statt request.params wie

var name = request.body.name; 
var price = request.body.price; 

Sie senden json vom Server verwenden müssen, so verwenden dataType : 'json' wie,

$.ajax({ 
    url:'/products', 
    type:'post', 
    dataType : 'json', // use json instead of text 
    data : { 
     name : $('#name').val(), 
     price : $('#price').val() 
    }, 
    success : function(data){ 
     console.log(data);// for name use data.data.name 
     //$('#output').val(data); 
    } 
}); 
+0

Ich sah nur Ihre Antwort und versuchte es, aber immer noch server.js {} zurück, wenn ich anrufe console.log (request.params) – HyeonWoo

+0

und ja es gibt var Elemente in der oberen Seite des gesamten Codes, aber ich habe es übersprungen, wenn ich die Frage schreibe – HyeonWoo

+0

Ich habe gerade versucht, Ihre aktualisierte Antwort, und ich bekam TypeError: Kann Eigenschaft 'Name' von nicht lesen undefined – HyeonWoo