ส่งค่าด้วย Ajax แล้วค่าที่ส่งไป มันตัดเว้นวรรคออกครับ

คือผมส่งค่าด้วย Ajax แล้วค่าที่ส่งไป มันตัดเว้นวรรคออกครับ เช่น ส่งค่า "ทดสอบ test 1234" แล้วตอนบันทึกเป็น "ทดสอบtest1234" ครับ



*** ต้องขอรบกวนด้วยครับ คือสคริปผมเป็น ASP ครับ ไม่รู้ว่าจะถูกกฎการโพสรึเปล่า ***



ส่วนของ Function JavaScript





<!--


var HttPRequest = false;


 


  function doCallAjax(cal_id) {


 HttPRequest = false;


 if (window.XMLHttpRequest) { // Mozilla, Safari,...


HttPRequest = new XMLHttpRequest();


if (HttPRequest.overrideMimeType) {


HttPRequest.overrideMimeType('text/html');


}


 } else if (window.ActiveXObject) { // IE


try {


HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");


} catch (e) {


try {


  HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");


} catch (e) {}


}


 } 


 


 if (!HttPRequest) {


alert('Cannot create XMLHTTP instance');


return false;


 }


 


var url = 'Update_t_motor_all.asp';


 


var Note_cal_note_1=eval("document.autoSumForm.Note_cal_note_"+cal_id+".value");


var pmeters = 'Note_cal_note=' +thai(Note_cal_note_1)+ '&Cal_ID='+cal_id;


HttPRequest.open('POST',url,true);


 


HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");


HttPRequest.setRequestHeader("Content-length", pmeters.length);


HttPRequest.setRequestHeader("Connection", "close");


HttPRequest.send(pmeters);


 


 


HttPRequest.onreadystatechange = function()


{


 


if(HttPRequest.readyState == 3)  // Loading Request


 {


  document.getElementById("mySpan_" + cal_id).innerHTML = "Now is Loading...";


 }


 


if(HttPRequest.readyState == 4) // Return Request


 {


  document.getElementById("mySpan_" + cal_id).innerHTML = HttPRequest.responseText;


 }


 


}


 


/*


HttPRequest.onreadystatechange = call function .... // Call other function


*/


 


  }


  


  var hexChars = "0123456789ABCDEF";


 


function Dec2Hex (Dec) {


var a = Dec % 16;


var b = (Dec - a)/16;


hex = "" + hexChars.charAt(b) + hexChars.charAt(a);


return hex;


}


 


function thai(s){


s2='';


for(var i=0;i<s.length;i++){


if(s.charCodeAt(i)>3423){


n=s.charCodeAt(i)-3424;


s2+='%'+Dec2Hex(n);


}else s2+=s.charAt(i);


}


return s2


}


 


//-->







ในส่วนของ Body




<td <%=bg1%> align="center">


                    <div id="Note_1_<%=cal_id%>">


                    <input type="button" name="EditButton_<%=cal_id%>" value="Note" onClick="Note_3_<%=cal_id%>.style.display=''; Note_2_<%=cal_id%>.style.display=''; Note_1_<%=cal_id%>.style.display='none'" />


                      </div>


                        <div id="Note_2_<%=cal_id%>" style="display:none">


                        <input type="button" name="UpdateButton_<%=cal_id%>" value="บันทึก" onClick="


                            if (Note_cal_note_<%=cal_id%>.value=='') {


                                alert('กรุณากรอกข้อมูลให้ครบด้วยครับ !');


                            } else if (Note_cal_note_<%=cal_id%>.value!='') {


                                Note_1_<%=cal_id%>.style.display='';


                                Note_2_<%=cal_id%>.style.display='none';


                                Note_3_<%=cal_id%>.style.display='none';


                                JavaScript:doCallAjax('<%=cal_id%>');


                            }" />


                            <input type="button" name="CancelButton_<%=cal_id%>" value="ยกเลิก" onClick="Note_1_<%=cal_id%>.style.display=''; Note_2_<%=cal_id%>.style.display='none'; Note_3_<%=cal_id%>.style.display='none'" />


                        </div>


                  </td>


<td <%=bg2%>>


                    <div id="Note_3_<%=cal_id%>" style="display:none">


                    <input type="text" name="Note_cal_note_<%=cal_id%>" style="width:99%" value="<%=rs("cal_note")%>" />


                      </div>


<span id="mySpan_<%=cal_id%>">


<%


                            If rs("cal_note")<>"" Then


                                Response.Write rs("cal_note")


End If


                            %>


                        </span>


                    </td>





หน้าที่รับค่า (Update_t_motor_all.asp)





<%


Response.Charset = "windows-874"


Response.CacheControl = "no-cache"


Response.AddHeader "Pragma", "no-cache"


Response.Expires = -1


 


Set Conn=Server.CreateObject ("ADODB.Connection")


Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath ("Database1/anc.mdb")


 


cal_note=Request.Form("Note_cal_note")


Cal_ID=Request.Form("Cal_ID")*1


 


sql="select cal_note,cal_by from calculate where cal_id="&Cal_ID


Set rs=Server.CreateObject("ADODB.Recordset")


rs.Open sql, Conn, 1,3


 


If rs.recordcount<>0 Then


rs("cal_note")=cal_note


rs("cal_by")=Session("age_nickname")


rs.Update


End If


 


rs.Close


 


If cal_note<>"" Then


Response.Write cal_note


End If


%>



29 ธ.ค. 2554 2 2,352

ผลลัพท์ที่ได้ดูจากไหนครับ จากฐานข้อมูลหรือว่าจากการส่งค่าไปแล้วมาแสดงผล



เท่าที่ดูโค้ด ผมไม่เห็น textarea ดังนั้น มันจึงไม่น่าจะมีคำสั่งขึ้นบรรทัดให่ครับ เพราะปกติแล้ว input text จะรับค่าได้บรรทัดเดียว ดังนั้นข้อความขึ้นบรรทัดใหม่อาจถูกตัดออก



แนะนำให้ลองใช้ textarea ดูครับ



ถ้าค่ามาจากที่อืน อาจเป็นเพราะถูกตัดที่ฐานข้อมูลครับ ลองแทนที่ตัวอัการขึ้นบรรทัดใหม่ด้วย \r\n หรืออย่างอื่น (ผมไม่แน่ใจว่า ASP ใช้คำสั่งอะไร)



อีกอย่าง การ submit ด้วย Ajax ค่าควรเข้ารหัสก่อน เช่น value = encodeURIComponent(value);





#1

ผลลัพท์ที่ได้ดูจาก DB ครับ แล้วผมลองใช้ textarea แล้ว ก็โดนตัดเว้นวรรคออกเหมือนกันครับ แต่เดี๋ยวลองใช้วิธีการแทรกคำดูครับ อย่างเว้นวรรค ใส่ %20 น่าจะช่วยได้ ผลลัพท์เป็นอย่างไร เดี๋ยวเอามาลงให้ดูครับผม laugh
#2
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^