2010-02-18 71 views
2

下面是我的HTML爲什麼ajax post方法不支持「空格」?

<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") 
%> 

,這節省言論(數據庫字段爲「Remarks_text」,數據類型爲「text」)

在數據庫中讀取textarea數據(「請接受m y提交表單「。)textarea數據沒有空格。

像這樣 please,acceptmysubmitform。

我需要保存 請接受我的提交表單。

希望您的支持

+0

對面這個線程來了。如果你有時間,請閱讀一些基本的jQuery介紹資料,我相信你會愛上它。這個想法是隱藏瀏覽器實現的XMLHttpRequest :) – 2010-07-27 03:11:27

回答

11

嘗試url編碼:

var RES = encodeURIComponent(document.getElementById("Remarks").value); 
+0

這對我有效。空間正在從我的字符串中刪除,因爲任何原因,因爲這從來沒有發生過,但這固定它。 – James 2012-05-09 13:33:32

0

變化

document.getElementById("Remarks").innerHTML;

document.getElementById("Remarks").value;

0

我懷疑URL或HTTP標頭中不支持空格,因此舊URL有%20而不是空格。現在的瀏覽器和服務器現在都在幕後做這件事。

我發現在發送之前使用formValues = formValues.replace(/ /gi,"%20");替換空格%20解決了問題。

0

是的,這是固定的!

例子:

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

+1

爲什麼你的答案比接受的答案更好? – 2012-10-27 23:59:10

相關問題