这是我的代码
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/