首页 > 解决方案 > 如何将 ajax 调用中的函数从 JQuery 传递到 Node.JS 服务器

问题描述

这是我的代码

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

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

标签: javascriptjquerynode.jsajax

解决方案


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

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>

注意也应该使用encodeURIComponent(),因为它是一个 GET。如果以 POST 方式发送,则不需要


推荐阅读