[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Генерация html кода сценарием php
ElfSam
Проблема следующая:
Есть html-страница, содержащая 3 блока <div>. Первый блок содержит форму для ввода данных, второй блок содержит шапку таблицы и 3 блок, в который должны записываться строки таблицы, полученные посредством асинхронных запросов.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>
Асинхронный запрос AJAX </title>
<meta
http-equiv="Content-Type" content="text/html; charset="windows-1251" />
<link rel="
stylesheet" type="text/css" href="style2/my_style.css" />
<script type="
text/[SPAN=darling]javascript[/SPAN]" src="script.js"> </script>
</head>
<body class="
main">
<div class="
blok_leftx2" id="blok1">
<h3 class="
text2"> Добавить новую запись: </h3>
<form name="
form1">
<h4 class="
text1">
ФИО работника <br />
<input type="
text" id="name" /> <br />
Заработная плата <br />
<input type="
text" id="money" /> <br />
<hr width=100% />
<input type="
button" onclick="addData()" value="Добавить >>" />
</h4>
</form>
</div>
<div
class="blok_rightx2" id="blok2">
<table
class="table_center">
<h4
class="text1">
<tr>
<th
class="fon_td4"> ФИО работника</th>
<th
class="fon_td4"> Заработная плата, грн </th>
<th
class="fon_td4"> Отчисления в ПФ, грн </th>
<th
class="fon_td4"> Отчисления в фонд занятости, грн </th>
<th
class="fon_td4"> Отчисления в фонд страхования нетрудоспособности, грн </th>
<th
class="fon_td4"> Налог с доходов физ. лиц, грн </th>
</tr>
<div
id="blok3" />
</h4>
</table>
</div>
</body>
</html>




Спустя 3 минуты, 24 секунды (19.11.2009 - 14:48) ElfSam написал(а):
Вот код javascript
var html = "";
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
try
{
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
for(var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch(e)
{
}
}
}

if(!xmlHttp)
alert("Ошибка создания объекта XMLHttpRequest.");
else
return
xmlHttp;
}

function addData()
{
if(xmlHttp)
{
try
{
var name = document.getElementById("name").value;
var money = document.getElementById("money").value;
var params = "name=" + name + "&money=" + money;
xmlHttp.open("GET", "make.php?"+params, true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
catch(e)
{
alert("Невозможно соединиться с сервером: \n" +e.toString());
}
}
}


function handleRequestStateChange()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
try
{
var xmlResponse = xmlHttp.responseXML;

if(!xmlResponse || !xmlResponse.documentElement)
throw("1.Invalid XML structure: \n" + xmlHttp.responseText);
var rootNodeName = xmlResponse.documentElement.nodeName;
if(rootNodeName == "parseerror")
trow("2.Invalid XML structure: \n" + xmlHttp.responseText);
xmlRoot = xmlResponse.documentElement;
if(rootNodeName != "response" || !xmlRoot.firstChild)
trow("3.Invalid XML structure: \n" + xmlHttp.responseText);
responseText = xmlRoot.firstChild.data;

html += responseText;
myDiv = document.getElementById("blok3");
myDiv.innerHTML = html;
}
catch(e)
{
alert("Ошибка чтения ответа: \n"+e.toString());
}
}

else
{
alert("Возникли проблемы во время получения данных: \n"+xmlHttp.statusText);
}
}
}


Тут считывается значение полей формы и посылается запрос на обработку сценарию php.
<?php
include("mysql_connect.php");
$name = $_GET['name'];
$money = (double) $_GET['money'];
//echo $name. ' - '.$money;
$str_sql="SELECT * FROM `yderjki` WHERE `pred_zp`>='".$money."' AND `pred_zp0`<'".$money."'";
$result = mysql_query($str_sql) or die(mysql_error().'<br />'.$str_sql);
$yderjki = mysql_fetch_assoc($result);
$p_fond = $money*$yderjki['p_fond']/100;
$z_fond = $money*$yderjki['z_fond']/100;
$s_fond = $money*$yderjki['s_fond']/100;
$pd_nalog = ($money-$p_fond-$s_fond-$z_fond)*$yderjki['pd_nalog']/100;
$string = '<tr>
<td class="fon_td5">'
.$name.'</td>
<td class="fon_td5">'
.$money.'</td>
<td class="fon_td5">'
.$p_fond.'</td>
<td class="fon_td5">'
.$z_fond.'</td>
<td class="fon_td5">'
.$s_fond.'</td>
<td class="fon_td5">'
.$pd_nalog.'</td>
</tr>'
;
mysql_close($link);
//echo $string;

$dom = new DOMDocument();
$response = $dom -> createElement('response');
$dom -> appendChild($response);
$responseText = $dom -> createTextNode($string);
$response -> appendChild($responseText);
$xmlString = $dom -> saveXML();
echo $xmlString;
?>

Если в двух словах, то мне надо html-код, сгенерированный php-сценарием, вставить в блок <div id="blok3>

Спустя 13 минут, 43 секунды (19.11.2009 - 15:02) ElfSam написал(а):
Значения входных данных считываются, производяться вычисления, а затем я пытаюсь сформировать теги Html в строке $string и вернуть ее клиенту, чтоб в javascript вставить этот html-код в блок div.
Пытался разными способами, но результат ни один не дал:
1)сперва я пытался просто вернуть ответ в виде строки
echo $string
и прием ответа в виде
                      var xmlResponse = xmlHttp.responseText;
/*
if(!xmlResponse || !xmlResponse.documentElement)
throw("1.Invalid XML structure: \n" + xmlHttp.responseText);
var rootNodeName = xmlResponse.documentElement.nodeName;
if(rootNodeName == "parseerror")
trow("2.Invalid XML structure: \n" + xmlHttp.responseText);
xmlRoot = xmlResponse.documentElement;
if(rootNodeName != "response" || !xmlRoot.firstChild)
trow("3.Invalid XML structure: \n" + xmlHttp.responseText);
responseText = xmlRoot.firstChild.data;
*/

html += xmlResponse;
myDiv = document.getElementById("blok3");
myDiv.innerHTML = html;

я получил результат: worker1 2000 40 20 289.2. Значения верные, НО они не отображаются в виде строки таблицы и выводяться не в блок 3, а в блок 2 над шапкой таблицы!


Спустя 7 минут, 25 секунд (19.11.2009 - 15:09) ElfSam написал(а):
2) Далее я попытался вернуть ответ клиенту в виде XML:
    //echo $string;

$dom = new DOMDocument();
$response = $dom -> createElement('response');
$dom -> appendChild($response);
$responseText = $dom -> createTextNode($string);
$response -> appendChild($responseText);
$xmlString = $dom -> saveXML();
echo $xmlString;

тут ответ принимается:
                 var xmlResponse = xmlHttp.responseXML;

if(!xmlResponse || !xmlResponse.documentElement)
throw("1.Invalid XML structure: \n" + xmlHttp.responseText);
var rootNodeName = xmlResponse.documentElement.nodeName;
if(rootNodeName == "parseerror")
trow("2.Invalid XML structure: \n" + xmlHttp.responseText);
xmlRoot = xmlResponse.documentElement;
if(rootNodeName != "response" || !xmlRoot.firstChild)
trow("3.Invalid XML structure: \n" + xmlHttp.responseText);
responseText = xmlRoot.firstChild.data;

html += responseText;
myDiv = document.getElementById("blok3");
myDiv.innerHTML = html;

В результате выдается сообщение: 1.Invalid XML structure: ну и дальше приводит код <response> тут всякая белиберда, которую трудно воспроизвести </response>. Т.е. я неправильно создал документ XML.
Подскажите пожлста где я ошибку допустил

Спустя 3 минуты, 7 секунд (19.11.2009 - 15:12) ElfSam написал(а):
Лучше было бы, если б я привел иллюстрации. Но я не умею вставлять картинки (( Если поскажите, как это делать то результаты покажу в виде скриншотов

Спустя 1 год, 29 дней, 14 часов, 2 минуты, 12 секунд (19.12.2010 - 05:14) Гость_Михаил написал(а):
у меня такаяже проблемка , удалось найти решение ?

Спустя 1 год, 1 месяц, 29 дней, 12 часов, 58 минут, 15 секунд (18.02.2012 - 17:13) alexbel2404 написал(а):
Некропостеры smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.