Как вызвать nicEdit (editbox) или jquery (указатель даты для текстового поля) после XMLHttpRequest?
-
16-09-2019 - |
Вопрос
Нужна помощь (или пример), так как я, похоже, не могу вызвать jquery datepick или nicEdit при использовании XMLHttpRequest.
Мой код поставляется с 4 файлами php:
<p>Main page: main.php<br />
++++++++++++++++++<br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br />
<html xmlns="http://www.w3.org/1999/xhtml"><br />
<head><br />
<meta http-equiv="content-type" content="text/html; charset=utf-8" /><br />
<title>Education Centre</title><br />
<link href="style.css" rel="stylesheet" type="text/css" media="screen" /><br />
<script type="text/javascript" src="script.js"></script><br />
<script type="text/javascript" src="mainjs.js"></script><br />
<script src="http://js.nicedit.com/nicEdit-latest.js" type='text/javascript'></script><br />
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script></p>
<p></head><br />
<body onLoad="init_table();"><br />
<div id="page"><br />
<form name='form1'><br />
<p>&nbsp;</p><br />
<div id="content"><br />
<div id="showTable"> </div><br />
</div><br />
</form><br />
</div><br />
<!-- end page --><br />
</body><br />
</html><br />
</p>
<br />
<p>mainjs.js<br />
+++++++++<br />
function init_table() {<br />
requestInfo('showMain.php?mode=list&prev_cid=1','showTable','');<br />
}</p>
<p> </p>
<p>script.js [copied and tested to be ok with other pages]<br />
+++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
function getHTTPObject() {<br />
var xmlhttp;<br />
<br />
if(window.XMLHttpRequest){<br />
xmlhttp = new XMLHttpRequest();<br />
}<br />
else if (window.ActiveXObject){<br />
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");<br />
if (!xmlhttp){<br />
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");<br />
}<br />
<br />
}<br />
return xmlhttp;<br />
}</p>
<p>var http = getHTTPObject(); // We create the HTTP Object</p>
<p>function requestInfo(url,id,redirectPage) { <br />
var temp=new Array();<br />
http.open("GET", url, true);<br />
http.onreadystatechange = function() {<br />
if (http.readyState == 4) {<br />
if(http.status==200) {<br />
var results=http.responseText;<br />
if(redirectPage=="" || results!="1") {<br />
var temp=id.split("~"); // To display on multiple div <br />
var r=results.split("~"); // To display multiple data into the div <br />
if(temp.length>1) {<br />
for(i=0;i<temp.length;i++) { <br />
document.getElementById(temp[i]).innerHTML=r[i];<br />
}<br />
} else {<br />
document.getElementById(id).innerHTML = results;<br />
} <br />
<br />
} else {<br />
window.location.href=redirectPage; <br />
}<br />
} <br />
}<br />
};<br />
http.send(null);<br />
}<br />
</p>
<br />
<p>showMain.php<br />
++++++++++++<br />
<?php<br />
header('Content-Type: text/xml');</p>
<p>//include("config.php");<br />
//include("mysql.lib.php");<br />
//$obj=new connect;<br />
<br />
$netwkinfo = "Some information pulled from database";<br />
echo "<table>";<br />
echo "<tr><td>My Data</td> <td><textarea id='netwkinfo' cols='75' rows='5' >" . $netwkinfo . "</textarea></td></tr>";<br />
echo "</tr>";<br />
echo "</table>";<br />
?><br />
</p>
showMain.php — это файл, который извлекает данные из базы данных для отображения/редактирования и т. д.но для простоты я присваиваю значение $netwkinfo.
Мне бы хотелось увидеть функцию (панель) nicEdit, отображаемую в поле редактирования.К сожалению, я этого не вижу, появляется простое поле редактирования.Что может быть не так и как это исправить, чтобы всё заработало.
Сходным образом ЕСЛИ Я использовал jquery datepicker для текстового поля в showmain.php, я тоже не вижу, чтобы он работал.Я думаю, что это та же концепция, но я просто не мог понять, как заставить их работать.
Ценю любую помощь здесь.Спасибо.
Решение 2
Нашёл подсказку к ответу здесь.
еще не удалось успешно реализовать Nicedit, но DatePicker для jquery был решен.
для средства выбора даты я использовал:
$(function(){
$('.inputDate').live('click', function() {
$(this).datepicker({
starts: 1,
position: 'right',
onChange: function(formated, dates){
$('#inputDate').val(formated);
$('#inputDate').DatePickerHide();
}
});
});
});
Другие советы
Поскольку на странице уже есть jQuery, почему бы не использовать его функциональность AJAX. Ваши файлы сценариев станут намного проще читать.
mainjs.js
function init_table() {
requestInfo('showMain.php?mode=list&prev_cid=1','showTable','');
}
скрипт.js
function requestInfo(url,id,redirectPage) {
$.ajax({ type: "POST",
url: url,
data: id,
success: function(msg){
var temp = id.split('~');
var r= msg.split("~")
for (i=0;i<temp.length;i+=1){
$(temp[i]).val(r[i]);
}
$(document).location.href = redirectPage;
});