คือผมส่งค่าด้วย 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
%>
*** ต้องขอรบกวนด้วยครับ คือสคริปผมเป็น 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
%>
ผลลัพท์ที่ได้ดูจากไหนครับ จากฐานข้อมูลหรือว่าจากการส่งค่าไปแล้วมาแสดงผล
เท่าที่ดูโค้ด ผมไม่เห็น textarea ดังนั้น มันจึงไม่น่าจะมีคำสั่งขึ้นบรรทัดให่ครับ เพราะปกติแล้ว input text จะรับค่าได้บรรทัดเดียว ดังนั้นข้อความขึ้นบรรทัดใหม่อาจถูกตัดออก
แนะนำให้ลองใช้ textarea ดูครับ
ถ้าค่ามาจากที่อืน อาจเป็นเพราะถูกตัดที่ฐานข้อมูลครับ ลองแทนที่ตัวอัการขึ้นบรรทัดใหม่ด้วย \r\n หรืออย่างอื่น (ผมไม่แน่ใจว่า ASP ใช้คำสั่งอะไร)
อีกอย่าง การ submit ด้วย Ajax ค่าควรเข้ารหัสก่อน เช่น value = encodeURIComponent(value);
เท่าที่ดูโค้ด ผมไม่เห็น textarea ดังนั้น มันจึงไม่น่าจะมีคำสั่งขึ้นบรรทัดให่ครับ เพราะปกติแล้ว input text จะรับค่าได้บรรทัดเดียว ดังนั้นข้อความขึ้นบรรทัดใหม่อาจถูกตัดออก
แนะนำให้ลองใช้ textarea ดูครับ
ถ้าค่ามาจากที่อืน อาจเป็นเพราะถูกตัดที่ฐานข้อมูลครับ ลองแทนที่ตัวอัการขึ้นบรรทัดใหม่ด้วย \r\n หรืออย่างอื่น (ผมไม่แน่ใจว่า ASP ใช้คำสั่งอะไร)
อีกอย่าง การ submit ด้วย Ajax ค่าควรเข้ารหัสก่อน เช่น value = encodeURIComponent(value);
ผลลัพท์ที่ได้ดูจาก DB ครับ แล้วผมลองใช้ textarea แล้ว ก็โดนตัดเว้นวรรคออกเหมือนกันครับ แต่เดี๋ยวลองใช้วิธีการแทรกคำดูครับ อย่างเว้นวรรค ใส่ %20 น่าจะช่วยได้ ผลลัพท์เป็นอย่างไร เดี๋ยวเอามาลงให้ดูครับผม