我正在使用AJAX从php文件中查询数据库....然后应该将数据库查询的结果放在两个不同的html textareas中。这是我的代码:
javascript:
function ajax_post(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "displaypatientmessage.php";
var fn = document.getElementById("title").value;
//var ln = document.getElementById("last_name").value;
var vars = "title="+fn;
hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("question").innerHTML = return_data;
}
}
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request
document.getElementById("question").innerHTML = "processing...";
}
PHP
<?php
$title = $_POST['title'];
$conn=mysqli_connect("localhost","root","","askthedoctor");
$sql="select patient_text, doctor_text from messages where title='".$title."';";
$result=mysqli_query($conn,$sql);
$row=mysqli_fetch_array($result);
echo $row[0];
echo $row[1];
?>
形式
<form>
<table id="table" class="table">
<tr>
<th>Messages</th>
<th>Problem Description</th>
<th>Doctor's Answer</th>
<th></th>
</tr>
<tr>
<th><select id="title">
<?php
$sql="select title from messages where paitient_id=(select id from login where username='".$username."');";
$result=mysqli_query($conn,$sql);
while($row=mysqli_fetch_array($result))
{
?>
<?php echo "<option value=\"mesazhi1\">".$row[0]."</option>";}?>
</select>
</th>
<td><textarea rows="17.95" col="100" id ="question" > </textarea></td>
<td><textarea rows="17.95" col="100" id ="answer" readonly> </textarea></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><input type="button" name="openmessage" value="Display Selected Message" onClick="ajax_post();"></td>
</tr>
</table>
</form>
现在我希望将回声$row[0]
置于问题文本区域
和echo $row[1]
将被放入回答textarea
答案 0 :(得分:1)
您需要使用~
等字符加入两个输出。
echo $row[0] . '~' . $row[1];
在javascript代码中,将响应按~
拆分为:
var return_data = hr.responseText;
var temp = return_data.split('~');
document.getElementById("question").innerHTML = temp[0];
document.getElementById("answer").innerHTML = temp[1];
基本概念是:
您需要通过AJAX传递多个字符串,而不是单个字符串。
用字符加入两个字符串。
在javascript结尾,按~
爆炸(拆分)输出。
在这里,你得到阵列。
数组的第一个元素是问题,第二个元素就是答案。
很简单!!!
答案 1 :(得分:1)
不要像这样回显文本,只需返回一个json对象。
使用php函数json_encode
将数组编码为json:
json_encode(array('question' => $row[0], 'answer' => $row[1]));
然后在您的成功函数中,您将结果解析为这样的javascript对象:
var result = JSON.parse(result);
然后,您可以访问以下行来填充字段
result.question; result.answer
;
您当前代码无效的原因是您的ajax查询需要1个结果。所以它不会将你的两个回声识别为一对。
编辑:
同样使用jQuery,vanilla javascript笨重而丑陋。