我有此代码(如下)。
$.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服务中再次将它们放回去。
我要问的是,是否有更好的方法可以做到这一点?我每次都要对字符串进行编码,然后才能通过,这似乎有点疯狂。
谢谢
该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 + '"}', });