Добрый день!
Пишу маленький сайтик. Данные из sql сервера забирает php. Логика работы приложения следующая. Календарик на jQuery, на нем выбирается 2 даты, начальная и конечная. В зависимости от выбранных дат в левой колонке выводится список, список выводится посредством ajax, абсолютно стандартный код взятый мной из учебника:
// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// creates an XMLHttpRequest instance
function createXmlHttpRequestObject()
{
// will store the reference to the XMLHttpRequest object
var xmlHttp;
// this should work for all browsers except IE6 and older
try
{
// try to create XMLHttpRequest object
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
// assume IE6 or older
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
// try every prog id until one works
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
// try to create XMLHttpRequest object
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {}
}
}
// return the created object or display an error message
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
// read a file from the server
function process()
{
// only continue if xmlHttp isn't void
if (xmlHttp)
{
// try to connect to the server
try
{
// initiate the asynchronous HTTP request
if (begin || end){
a=begin;
b=end;
var params="time1="+a+"&time2="+b;
xmlHttp.open("GET", "menu.php?"+params, true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
else {
xmlHttp.open("GET", "menu.php", true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
}
// display the error in case of failure
catch (e)
{
alert("Can't connect to server:\n" + e.toString());
}
}
}
// function called when the state of the HTTP request changes
function handleRequestStateChange()
{
// when readyState is 4, we are ready to read the server response
if (xmlHttp.readyState == 4)
{
// continue only if HTTP status is "OK"
if (xmlHttp.status == 200)
{
// do something with the response from the server
handleServerResponse();
}
else
{
// display status message
alert("There was a problem retrieving the data:\n" +
xmlHttp.statusText);
}
}
}
// handles the response received from the server
function handleServerResponse()
{
// retrieve the server's response packaged as an XML DOM object
response = xmlHttp.responseText;
myDiv = document.getElementById("menu");
myDiv.innerHTML = response;
}
Я вывожу в колонку, которая отмеченна div'ом текст через PHP, однако в нем работает только тот JavaScript код, который является событием(onclick например):
while ($row = mysqli_fetch_array($ip_result))
{
//echo "<tr><td><SMALL><a ID=\"url\" href=\"?ip=".$row[srcip]."".$quer."\" TARGET=\"top\">";
echo "<tr><td><SMALL><a ID=\"url\" onclick=tabl('".$row[srcip]."') href=#>";
echo "$row[srcip]"."</a></SMALL></td>";
echo "<td><SMALL>".format($row[download])."</SMALL></td></tr>";
}
echo "</table>";
После выбора значения из этой таблички какой-либо строчки мне нужно выводить центральную табличку, также через PHP, я вывожу ее скриптом аналогичным первому. в нем также не работает JavaScript.
Вопрос следующий, какая правильная логика взаимодействия JavaScript и PHP ? Возможно мой путь построения странички является ущербным, как бы вы посоветовали составить логику такой страницы, чтобы я мог нормально использовать JavaScript и после вывода таблицы ?