javascript - 如何将 ajax 调用中的函数从 JQuery 传递到 Node.JS 服务器

标签 javascript jquery node.js ajax

这是我的代码

let url = "/blabla";
let ajax_options = {
    data:{
        params_list:{
            sortFunction: (x, y) => parseFloat(x) - parseFloat(y);
        }
    }
};
$.ajax(url,ajax_options).then((res) => {
    //do something
});

但是当我检查浏览器尝试加载的实际 GET url 时,我得到:

http://localhost/blabla?params_list[sortFunction]=NaN

我应该如何编写代码以使其正确传递函数定义?

最佳答案

将函数引用保存到变量并在 $.ajax 内部解析之前使用 Function#toString()

const fn = (x, y) => parseFloat(x) - parseFloat(y),
      url = 'https://httpbin.org/get';

let ajax_options = { 
  data: {
    params_list: {
      sortFunction: fn.toString()
    }
  }
};

$.ajax(url, ajax_options).then(({args, url}) => {
  console.log('Response data ::', args);      
  console.log('URL used ::', url);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Note 可能还应该使用 encodeURIComponent() 因为它是 GET。如果以 POST 方式发送则不需要

关于javascript - 如何将 ajax 调用中的函数从 JQuery 传递到 Node.JS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214170/

相关文章:

node.js - 在 Node 应用程序之间共享代码

node.js - Express.js : app. locals vs res.locals vs req.session

node.js - 如何通过 Header 传递 JWT 并通过 Sails.js 中的服务器端 View 检索数据

javascript - 用 JavaScript 模仿 iPhone 主屏幕滑动

javascript - 排列需要帮助编码

javascript - socket.io 立即启动并再次停止

javascript - 修复由强化检查标记的动态代码注入(inject)问题

jQuery $(ui.draggable).remove() 不适用于 IE

jquery - 使用CSS在向下滚动时淡入元素

javascript - Cloudinary + Sails.js 直接上传不起作用