【发布时间】:2016-06-19 16:05:27
【问题描述】:
在 AJAX 调用中,我将文本框值作为对象发送到 ASP.NET 页面方法,如下面的示例所示。我面临的问题是,当任何文本框值包含 space 我得到错误:
错误请求
您的浏览器发送了此服务器无法理解的请求。客户端发送了格式错误的主机头
虽然我使用的是data: JSON.stringify(obj),但几乎 90% 的尝试都失败了。但是,当所有文本框值都没有 space 时,请求每次都会完成。试图弄清楚但无法发现问题。
var obj = {};
obj.CapCode = $.trim($('#CapTextBox').val());
obj.Registered_Name = $.trim($('#Registered_NameTextBox').val()).replace(/\s\s+/g, ' ');
obj.eMail = $.trim($('#e_MailTextBox').val());
$.ajax({
type: "POST",
url: 'Register.aspx/SaveRecord',
data: JSON.stringify(obj),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (resultData) {
try {
$("#User_modal").modal();
}
catch (err) {
alert('ERROR:\n An error occurred while getting records. Try again.');
}
},
error: function (x, e, m) {
errorHandler(x, e, m, $("#btnSave"), false);
},
});
以上代码在开发系统上运行没有任何问题,但在生产上出现此错误
【问题讨论】:
-
你猜到了吗?
-
不,我检查了几乎所有内容,前端、后端、服务器日志、页面加载等,但没有解决方案。我怀疑这可能是由模板中使用的一些 jquery/bootstrap 插件引起的。只是为了测试,我删除了所有模板 css、js 文件和 ajax 并尝试将记录保存到成功的服务器。
-
我最终用空格替换了
+,而在服务器端则相反
标签: jquery asp.net ajax http-headers bad-request