2017-05-06 182 views
0

嘗試了很多示例,花費了大量時間,但它只是沒有解決。如果有人能夠在這種情況下幫助我,那將是非常棒的。所以,我想要做的是從p#lessonText.lesson(style='margin-left:1%;' name='desc') #{item.description} 獲得價值我需要#{item.description}傳遞給我的服務器端。從客戶端到服務器端節點的傳輸值js

這是在服務器端的我的客戶端代碼

form#myForm() 
    .container 
    ul 
     each item, index in items 
     #allLessons.container 
      .lessonsWrap 
      h3.lesson #{index+1} . Lesson | 
      p#lessonText.lesson(style='margin-left:1%;' name='desc') #{item.description} 
      button#butPam.btn.btn-primary(type='submit') Begin 
      .lesDescription 
       p(style='margin-left:1%;') Lecturer: #{item.author} 
       p(style='margin-left:1%;') Level: #{item.level} 

       script. 
       $('#myForm').on('submit', function(event){ 

        var createVar = $('#lessonText').text(); 
        alert(createVar); 
        $.ajax({ 
        url: '/qVal', 
        method: 'post', 
        contentType: 'application/json', 
        data: JSON.stringify({desc: createVar.val()}), 
        async: true, 
        success: function(response){ 
         console.log(response); 

        } 
        }) 

       }); 

這裏現在我只是想看看,如果我可以創建一個變量,它是從客戶端通過。

router.post('/qVal', function(req,res){ 
    console.log("server"); 
    var description = req.body.desc; 
    console.log(typeof(desc)); 
    console.log(desc); 
}); 

也許我錯了使用方法,也許我應該使用GET方法呢? 重要的是說,它看起來我的router.post不起作用。當我寫console.log(「服務器」),在控制檯單詞「服務器」沒有出現。

+0

所以你的'console.log(「服務器」);'被解僱? – gaganshera

+0

不是,它不 –

+0

檢查您的瀏覽器的ajax調用的網絡選項卡是否觸發,並檢查請求中的URL。我猜可能是/ qVal路徑 – gaganshera

回答

0
var querystring = require('querystring'); 

router.post('/qVal', function(req,res){ 
    req.on('data',function(data){ 
      data = querystring.parse(data.toString('utf-8')); 
      var description = data.desc; 
      console.log(typeof(desc)); 
      console.log(desc); 
    }); 
} 
+0

看起來像router.post沒有開火 –

+0

需要更多的代碼才能理解否則訪問我的github回購https://github.com/SaifAnsari96/Rest-Server-with-pure-Node.js/blob/master/server.js – Saif

0

您將錯誤的方法發送到服務器的數據部分您將JSON轉換爲字符串,但在服務器上,您將得到JSON值,這就是我所看到的原因。

前端Ajax請求

$.ajax({ 
        url: '/qVal', 
        method: 'post', 
        contentType: 'application/json', 
        data: {desc: createVar.val()}, 
        async: true, 
        success: function(response){ 
         console.log(response); 
        } 
        }) 

節點的js

router.post('/qVal', function(req,res){ 
    console.log("server"); 
    console.log(JSON.stringify(req.body)); 
    console.log(req.body.desc) 
} 
+0

它看起來像router.post沒有啓動。控制檯不顯示「服務器」 –

0

當你使用JSON.stringify它分析你JSON爲字符串,如果它有" "


如果您將添加"desc"這樣的:

客戶

$.ajax({ 
     url: '/qVal', 
     method: 'post', 
     data: { 
        "desc": createVar.val() 
       }, 
     async: true, 
     success: function(response){ 
     console.log(response); 
     } 
     }) 



服務器

router.post('/qVal', function(req, res){ 
     console.log(JSON.stringify(req.body)); 
     console.log(req.body.desc) 
} 

它會以正確的方式發送到服務器。

+0

盡你所能,但這是我得到的。 http://i.imgur.com/KQJhiwa.png它看起來像我從客戶端 –

+0

6空值,也許你傳遞空值,嘗試發送「desc」:「示例」,如果它的工作,那麼你發送不正確的錯誤 –

+0

嗯,如果我隨機寫了一些東西,例如'data:{「desc」:「test」},'它起作用,並且我的服務器端的名字爲「test」。那麼,也許你知道我怎麼能通過像h2,p或其他任何標籤來傳遞價值? –

相關問題