ส่งค่าด้วย 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
%>
*** ต้องขอรบกวนด้วยครับ คือสคริปผมเป็น 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);