一尘不染

jQuery Ajax编码数据

ajax

我有此代码(如下)。

$.ajax
({
    type: "POST",
    url: "../WebServices/Feedback.svc/sendfeedback",
    dataType: 'json',
    async: false,
    data: '{"stars": "' + stars + '", "rating" : "' + rating + '", "note" : "' + encodeURIComponent(note) + '", "code" : "' + code + '", "permission" : "' + permission + '"}',
    contentType: "application/json; charset=utf-8"
});

我正在使用它将数据传递到Web服务,但是问题是其中是否有任何字符(,/?:@&= +
$#)。我放入了一个很好的encodeURIComponent,然后在Web服务中再次将它们放回去。

我要问的是,是否有更好的方法可以做到这一点?我每次都要对字符串进行编码,然后才能通过,这似乎有点疯狂。

谢谢


阅读 861

收藏
2020-07-26

共1个答案

一尘不染

该Web服务属于您还是您使用其他人的Web服务?Web服务不接受的原因是什么(,/?:@&= + $#)?

jQuery $ .ajax 默认contentType为 application / x-www-form-urlencoded
,这意味着jQuery将对内容进行编码。但是,由于您指定了不同的contentType,因此不会对数据进行编码,因此您必须自己进行编码。

另外,您可以尝试删除 contentType 选项,并正常传递您的内容(不带 encodeURICompnent )。

$.ajax
({
    type: "POST",
    url: "../WebServices/Feedback.svc/sendfeedback",
    dataType: 'json',
    async: false,
    data: '{"stars": "' + stars + '", "rating" : "' + rating + '", "note" : "' + note + '", "code" : "' + code + '", "permission" : "' + permission + '"}',
});
2020-07-26