在Node.js&中处理对req.body的POST使用Ajax快速

时间:2017-03-05 13:13:03

标签: jquery ajax node.js express post

我在我的Node.js&中使用Ajax。 Express网站,以便从文本框向服务器端发送值。 现在,它正在发挥作用; req.body具有我需要的文本值,但是JSON的格式化方式对我来说很难获得值。简而言之,似乎我的ajax将变量名重命名为在文本框中输入的值。所以不是req.body正在

SDL_RenderSetScale(renderer, 4.0f, 2.0f);
SDL_Rect rect = { 16, 16, 128, 128 };
SDL_RenderCopyEx(renderer, tex, NULL, &rect, 90.0, NULL, SDL_FLIP_NONE);

req.body显示:

for j in range(5, 0, -1):
    line = ''
    for i in range(j, 0, -1):
    line += str(i) + ' '
    print line

E.g: 在我的Jade文件中:

{ hashtag: 'test123' }

然后,在我的server.js中:

{ test123: '' }

所以,如果我在文本框中输入:

  

test123

req.body显示:

         form
            input#hash(type='text', name='hashtag[hash]', placeholder='#Hashtag')
            input#submit.btn.btn-primary(name='submit', type='submit', value='Send', onclick='return chk()')

    p#msg


script.
  function chk(){
    var posthash = document.getElementById('hashtag').value;
    console.log(posthash);
    $.ajax({
        type:"post",
        url: "/api/hash",
        data:posthash,
        cache:false,
        success: function(html){
            console.log("Successfully posted");
            $('#msg').html(html);
        },
        error: function(xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            alert(err.Message);
            console.log(error);
        }
    })
  return false;
  }

如您所见,变量名称本身就是文本框的值。因此,如果我试图说 console.log(req.body.hashtag) console.log(req.body.hash),它会显示为未定义 - 因为那不是变量名。

1 个答案:

答案 0 :(得分:1)

问题在于您提交posthash的方式。此变量包含您在输入中输入的字符串,但$.ajax期望对象为data选项。只需更改这样的行:

 data: {hashtag: posthash} ,

并且因为您将hash的输入声明为id

input#hash

你必须使用

document.getElementById('hash').value;

获得它的价值。