我有下面的代码,用于打入node.js端点。但是,当它被命中时,端点URL会像这样向其附加一个&
http://localhost:3004/expenses/?q=&12/02/2014
因此,我没有得到想要的结果。
这是我的代码的样子,
$('#myForm').on('submit', (e)=>{
e.preventDefault();
$.ajax({
type: 'GET',
url: 'http://localhost:3004/expenses/?q=',
processData: false,
data: $('#startDate').val(),
contentType: 'application/json',
success:(data, status)=>{
// alert(status);
},
error:()=>{
alert('problem');
}
})
})
有人可以照亮吗?
答案 0 :(得分:1)
问题很可能与processData: false
告诉jQuery不要格式化请求数据的格式有关,并且GET URL中已经包含?
。鉴于您没有提供请求json,我建议减少您的调用以简化问题。
$.ajax({
type: 'GET',
url: 'http://localhost:3004/expenses/',
data: { q: $('#startDate').val() },
success:(data, status)=>{
// alert(status);
},
error:()=>{
alert('problem');
}
});
如果未在选项中提供processData
,它将把您提供的数据转换为请求的查询参数。鉴于这是一个GET请求,它将为您生成?q=<value>
。就像评论中提到的那样,您不需要在选项上使用contentType: application/json
,因为它告诉jQuery将内容类型放入请求中,以便服务器知道您在体内将其发送json。你不是吗,:)