Почему «пробел» не поддерживается методом ajax post? - PullRequest
3 голосов
/ 18 февраля 2010

Ниже мой html

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
<script type="text/javascript">
function Data_Check()
{
var xmlHttp;

try
  {  
  xmlHttp=new XMLHttpRequest();  }
catch (e)
  { 
   try
    {    
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");   
     }
  catch (e)
    {   
     try
      {     
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
          }
    catch (e)
      {      
      alert("Your browser does not support AJAX!");      
      return false; 
           }    
           } 
            }
  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      {
      alert(xmlHttp.responseText);
      }
    }   

    var RES = document.getElementById("Remarks").innerHTML;
    var params ="RES="+RES;
    xmlHttp.open("POST","Data_Check.asp",true);       
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(params);

   }
</script>
</head>

<body>
<textarea id="Remarks" rows="5" name="Remarks" cols="79" style="font-family: Arial; font-size: 11px">please, accept my submit form.</textarea>

<br>
<img id="Submit" onclick ="return Data_Check();" border="0" src="submit.png" width="145" height="28">
</body>
<img
</html>

Здесь я сталкиваюсь с проблемой,

Когда я отправляю textarea innerhtml «Замечания» в мой «Data_Check.asp»

<%
RES = Request.Form("RES")
%>

и эти замечания сохраняются в моей базе данных sql. (Поле базы данных "Remarks_text" и тип данных "text")

В базе данных textarea данные считываются ("пожалуйста, примите мою форму отправки".) текстовые данные без пробела.

вот так пожалуйста, примите myysubmitform.

Мне нужно сохранить пожалуйста, примите мою форму отправки.

в надежде на вашу поддержку

Ответы [ 4 ]

12 голосов
/ 18 февраля 2010

Попробуйте кодировку URL:

var RES = encodeURIComponent(document.getElementById("Remarks").value);
0 голосов
/ 03 апреля 2012

Да, это исправлено!

Пример:

var dataString = "textcontent="+test.replace(/ /gi,"%20");

0 голосов
/ 27 июля 2010

Я подозреваю, что пробелы не поддерживаются в URL-адресах или HTTP-заголовках, поэтому старые URL-адреса имели %20 вместо пробела.Современные браузеры и серверы теперь делают это негласно.

Я обнаружил, что замена пробелов на %20 с использованием formValues = formValues.replace(/ /gi,"%20"); перед отправкой решила проблему.

0 голосов
/ 18 февраля 2010

Изменение

document.getElementById("Remarks").innerHTML;

до

document.getElementById("Remarks").value;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...