Ajax发布带有特殊字符的休息时间

时间:2018-07-22 15:50:35

标签: javascript php jquery ajax post

我试图将textarea的值传递给php页面,然后进行处理并将其添加到SQL数据库中。

我希望文本区域能够支持特殊字符。

一切正常,直到我将此字符串放入文本区域并将其发布:

  

JΛ¿KE#2 @#&($ ^ @%# @#%)) $&@ (“”“

我遇到501未实现错误。

现在,当我将某些PHP代码粘贴到文本区域(不运行,纯粹是另存为字符串)时,出现403 Forbidden错误。

为什么文本区域的值会影响错误代码?

目前,paste.php文件没有代码,因此我可以尝试了解错误的出处。我敢肯定错误来自ajax帖子。我在网上到处都看过,但找不到如何安全地发布字符串。在这种情况下,encodeURIComponent似乎不起作用。

这是按钮按下的JS:

var note = $("#note").val();
var dataString = encodeURIComponent(note);
$.ajax({
  type: "POST",
  url: "php/paste.php",
  data: JSON.stringify({
    paste: dataString
  }),
  dataType: 'text',
  contentType: "application/json; charset=utf-8",
  success: function(msg) {
    alert(msg);
    console.log(msg)
  },
  error: function(ts) {
    alert(ts.responseText)
  }
});

2 个答案:

答案 0 :(得分:0)

尝试添加

Content-Type: application/x-www-form-urlencoded

答案 1 :(得分:0)

需要在数据上使用此功能。

function encode_utf8(s) {
     return unescape(encodeURIComponent(s));
}

将内容类型更改为

ContentType: "application/x-www-form-urlencoded; charset=UTF-8"

然后将其添加到我的.htaccess文件中:

<IfModule mod_security.c>
 SecFilterEngine Off
 SecFilterScanPOST Off
</IfModule>