Ajax非同期コミットデータ戻り値の改行問題
背景:
実装する必要がある機能は、ドロップダウンボックスで分類を選択し、PHPにコミットして選択した分類に基づいてその分類の下のメンバー名を返し、戻り値の各メンバー名を改行してtextareaに表示することです.
htmlコード:
JQueryコード:
phpコードで返される値には直接改行「」、textareaではIEとFFの改行記号が「」、jQueryの処理では戻り値に注意、
実装する必要がある機能は、ドロップダウンボックスで分類を選択し、PHPにコミットして選択した分類に基づいてその分類の下のメンバー名を返し、戻り値の各メンバー名を改行してtextareaに表示することです.
htmlコード:
<form action="setduty.php?action=add" method="post" name="setForm" id="setForm">
<p> <label> :</label>
<select name="type" id="typeduty">
<option value="-1"> </option>
<option value="1"> </option>
<option value="2"> </option>
<option value="3"> </option>
</select>
</p>
<p class="opertext">
<label> :</label>
<textarea name="names" id="names" cols="30" rows="10"></textarea>
</p>
JQueryコード:
$(document).ready(function(){
$("#typeduty").change(function(){
var type = $("#typeduty").val();
$.post("setduty_do.php",
{
'cid' : type,
},function(data,status){
newData = data.replace(/\r
/g,'');
$("#names").html(newData);
});
});
});
PHPコード:if($type){
switch($type){
case "1":
$arrs = getChiefList();
break;
case "2":
$arrs = getDirectList();
break;
case "3":
$arrs = getAttendantList();
break;
default:
break;
}
$arr_names = "";
foreach($arrs as $arr){
if(strlen($arr[1])>2){
$arr_names.= $arr[1]."
";
}
}
echo $arr_names;
}
phpコードで返される値には直接改行「」、textareaではIEとFFの改行記号が「」、jQueryの処理では戻り値に注意、
newData = data.replace(/\r
/g,'');
は、返された結果を処理し、最初の改行記号を除去するために使用され、Ajaxが返された値には、自動的に改行が付きます.これはAjax自身が持っているものです.