我正在制作一个jQuery post请求,其中我正在设置标题中客户端提供的一些信息。电话看起来像这样:
jQuery.ajax({
url : myURL,
type : "POST",
beforeSend : function(request){
request.setRequestHeader('someInfo', clientInformation);
},
data : someData,
contentType : "text/plain",
success : successCallback,
error : errorCallback
});
这很好(大多数情况下),但如果客户端将中文字符输入到我在变量clientInformation
中传递的数据中,则请求将失败并显示消息:SyntaxError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest':
,然后是请求,然后是is not a valid HTTP header field value.
我尝试通过在请求的beforeSend
部分中包含此行来设置编码,但它似乎不起作用:
request.setRequestHeader("Content-Type",
"application/x-www-form-url-encoded; charset=utf-8");
如何配置我的ajax请求以发送中文(或其他非iso-8859-1)字符?
答案 0 :(得分:0)
我有类似的问题。错误的原因是自定义标头包含非ASCII字符。
要处理此类字符串,您必须对其进行URL编码:
request.setRequestHeader("Referrer", encodeURI('http://example.com/马轶群'));
或者,如果您要更改我的引荐来源网址:
<button (click)="onClick($event)"></button>
<ng-template #firstTemplate let-modal>
<div class="modal-footer">
<button type="button" class="btn btn-primary" (click)="onTest1($event); modal.close('Save click')">test1</button>
</div>
</ng-template>
<ng-template #secondTemplate let-modal>
<div class="modal-footer">
<button type="button" class="btn btn-primary" (click)="onTest2($event); modal.close('Save click')">test2</button>
</div>
</ng-template>