【问题标题】:Javascript AJAX passing undefined request.bodyJavascript AJAX 传递未定义的 request.body
【发布时间】:2020-06-23 16:24:54
【问题描述】:

我正在构建一个 Outlook API 插件和一个 REST API 杠杆节点/快递。我已经构建了 api 端,我可以成功调用并显示来自 POSTMAN 的请求,但是当我使用 javascript 调用时,请求为空。 API 中显示未定义。

taskpane.js

'''

function checkBodyforLinks(){
 Office.context.mailbox.item.body.getAsync(
    "html",
    { asyncContext: "This is passed to the callback" },
    function callback(result) {
        var parser = new DOMParser();
        var bodyHtml = parser.parseFromString(result.value, "text/html");
        //need to add check to ignore mailto: links
        var linkDomains = [], links = bodyHtml.links;
        document.getElementById("linkCheck").innerHTML = "No links found within email body";
        for (var i = 0; i < links.length; i++){
          linkDomains.push(links[i].href);
        }
        if(linkDomains.length > 0) {
          var apiurl = 'http://localhost:5000/linkcheck';
          var request = {
            "link": linkDomains[0]
          };
          console.log(request);
          $.ajax({
            url: apiurl,
            method: 'POST',
            type: 'json',
            data: request
          }).done(
           function(data){
            console.log("successfully called API");
            console.log(JSON.stringify(data));
          }).fail(function(error){
             console.log("api call failed");
             console.log(JSON.stringify(error));
      });

'''

这是我的 API index.js '''

var express = require("express");
var app = express();
var bodyParser = require('body-parser');
app.use(express.json());
app.use(bodyParser.json());

app.listen(5000, () => {
    console.log("Server running on port 5000");
   });

app.post('/linkcheck', (req, res, next) => {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    console.log(req.body.link);
    res.status(200).json({
        message: "Successfully called API"
    });
    return res;
});

'''

【问题讨论】:

    标签: javascript jquery node.js ajax express


    【解决方案1】:

    您的服务器期待一个带有 JSON 正文的请求,但您发送的是 url 编码数据。
    要发送 JSON,您必须将 ojbject 字符串化为 JSON,见下文

          $.ajax({
            url: apiurl,
            method: 'POST',
            type: 'json',
            data: JSON.stringify(request),
            contentType: 'application/json'
          })
    

    【讨论】:

    • 这很有帮助。然后我遇到了CORS问题。所以我安装了cors。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多