Php jquery.serialize()将空格替换为+;在Ajax调用中导致LITESPEED服务器出现403禁止的错误
下面的函数应该序列化表单数据并将其发送到服务器上进行处理Php jquery.serialize()将空格替换为+;在Ajax调用中导致LITESPEED服务器出现403禁止的错误,php,jquery,ajax,forms,litespeed,Php,Jquery,Ajax,Forms,Litespeed,下面的函数应该序列化表单数据并将其发送到服务器上进行处理 function postIt() { var postData = $("#myForm").serialize(); $.ajax({ type: 'POST', data: postData, url: 'php/makeTopics.php', success: function(data) { /* do stuff*/ }
function postIt() {
var postData = $("#myForm").serialize();
$.ajax({
type: 'POST',
data: postData,
url: 'php/makeTopics.php',
success: function(data) {
/* do stuff*/
}
})
}
但是,我刚刚开始从服务器接收到403禁止的
错误。经过调查,我发现.serialize()函数将空白替换为“+”,如果我重新发送数据时没有“+”s,我就不会再收到错误
我做错了什么?这是客户机问题还是服务器问题
更多信息:
-使用LITESPEED服务器
-我已经将我的php代码缩减为
,并且问题仍然存在,因此我认为它一定是Web服务器中的其他东西。此外,这是一种新的行为——我没有在两端修改代码来触发它
-工作数据示例:tn=factorystore&tkw1=manufacturers&tkw2=brickandmortar
-不工作数据示例:tn=工厂+仓库&tkw1=制造商&tkw2=砖+砂浆
(注意:以上数据示例是从Chrome控制台获取的“源”表单数据)当您说
将我的php代码减少到,问题仍然存在
你是说,返回403
通常,您可以要求主机检查服务器错误日志,以找出403错误的原因。403可能是由许多原因造成的。例如mod_安全性,或对某些URL、文件夹等的某些限制。服务器所期望的格式可能重复?是什么在生成403s-您的PHP代码,还是Web服务器中的其他内容?你能给我们举一个问题数据的例子吗?仅从JavaScription就很难确定到底发生了什么,如果您提交的数据没有空格(因此没有任何内容转换为+),它工作正常还是不正常?您能给我们展示一个工作和不工作数据的示例吗?@Viral:谢谢您的建议,但是如果我在同一服务器上托管的其他站点上有类似的代码呢如果是服务器问题,我宁愿在源代码处修复它,或者让jQuery用户知道,在某些服务器配置中,serialize()函数将导致意外错误。我不是说“”返回403,而是说“”返回403,而“”不返回403。然而,我联系了我的主机,得到的答复是“我已将导致您的帐户出现此问题的ModSecurity规则列入白名单。”。