Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   XMLHTTPRequest + include php (https://javascript.ru/forum/css-html-firefox-mizilla/12509-xmlhttprequest-include-php.html)

reinkarnator 21.10.2010 02:44

XMLHTTPRequest + include php
 
Здравствуйте. Вопрос в следущем. Есть некий php(hosting.php) скрипт который инклудится к основному php файлу(main.php).
Внутри hosting.php написана след javascript функция:

<input type="button" value="add" name="add" onclick="ff()" /><br />
<span name="form_inner" id="form_inner">
<script language='JavaScript' type="text/javascript">
var i = 1;
function ff(){
  document.getElementById('form_inner').innerHTML = document.getElementById('form_inner').innerHTML +
"<input style='margin-left:54px;' type='text' name='domain"+i+"' value='tim"+i+"'/><br/>";
i++;
}
function cc (){
var params = '+i+';
xmlhttp.open("POST", '/main.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(params);
}
</script>
</span><input type="submit" name="Save" value="Save" onclick="cc()" />


Функция ff() добавляет input-ы,функция cc() POST-тит эти данные,что я могу принять их в php.
Вопрос в следующем: Почему при работе напрямую (т.е не через include) с файлом hosting.php все данные POST-ся нормально,а при инклуде его в файл main.php перестают работать?
П.с все проверял все подключено нормально,вызывал даже методом GET переменные не передаются.
пробовал создать и через getXmlhttp(),пробовал указывать прямой урл.

Gvozd 21.10.2010 11:28

Телепаты в отпуске
дайте ссылку на ваш main.php, hosting.php
и кстати, в упор не вижу, где у вас тут применяется XMLHTTPRequest

reinkarnator 21.10.2010 15:03

1) насчет xmlhttprequest:
строчка с 12 по 14 (асинхронный xmlhttprequest)
вот

2) насчет main.php,это гигантский файл,описывающий вызовы к базе. Написан чисто на PHP,поэтому переписывать его не вижу смысла,тем более к этому файлу он не имеет ни какого отношения за исключением инклуда:
if ($action == 'add_host') {
include ("includes\add\hosting.php");
echo '<a href="'.$_SERVER['PHP_SELF'].'">Back</a>';
}


где $action задаётся при помощи $_GET и урл формируется в соответствии с ним /main.php?action=add_host

3) hosting.php:
<?php
defined('ADMIN') or die('Restricted access');
//POsting vars
$reg=$_POST['reg_date'];
$end=$_POST['end_date'];
$klient=$_POST['klient'];
$tarif=$_POST['tarif'];
$comm=$_POST['comment'];
$stat=$_POST['status'];
$mon=$_POST['month'];
//Buttons
if (isset($_POST['Save'])) {
//$query=mysql_query("INSERT INTO hosting (domain_hosting,date_from_hosting,date_untill_hosting,klient_hosting,tarif_hosting,comment_hosting,status_hosting,month_hosting) VALUES ('$domain','$reg','$end','$klient','$tarif','$comm','$stat','$mon')");
//header("Location: ../../main.php");
$x = '';
for ($i=1;$i<=5;$i++){
$z =array($_POST[domain.$i]);
$x .= implode(',',(array)$_POST['domain'.$i]);
}
//$x = implode(",",$z);
echo $x;
}

if (isset($_POST['cancel'])) {
header("Location: ../../main.php");
}
$dat=date("Y-m-d");
?>

<form method="POST" action="main.php" id="form" name="form">
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td>Domain: <input type="button" value="add" name="add" onclick="ff()" /><br />
<span name="form_inner" id="form_inner">
<script language='JavaScript' type="text/javascript">
var i = 1;
function ff(){
  document.getElementById('form_inner').innerHTML = document.getElementById('form_inner').innerHTML +
"<input style='margin-left:54px;' type='text' name='domain"+i+"' value='tim"+i+"'/><br/>";
i++;
}
function cc (){
var params = '+i+';
xmlhttp.open("POST", '/main.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(params);
}
</script>
</span></td>
<td>Reg. Date: <input type="text" name="reg_date" value="<?php echo $dat; ?>"></td>
<td>End Date: <input type="text" name="end_date" value="<?php echo $dat; ?>"></td>
</tr>
<tr>
<td>Klient
<select name="klient">
<?php
$query=mysql_query("SELECT name FROM `client_hosting`");
while ($row=mysql_fetch_array($query))
{
echo '<option>'.$row[name].'</option>';
}
?>
</select>
</td>
<td>Tarif
<select name="tarif">
<?php
$query=mysql_query("SELECT tarif FROM `tarif_hosting`");
while ($row=mysql_fetch_array($query))
{
echo '<option>'.$row[tarif].'</option>';
}
?>
</select>
</td>
<td>Month: <input type="text" name="month"></td>
</tr>
<tr>
<td>Comment:
<select name="comment">
<?php
$query=mysql_query("SELECT comment FROM `comment_hosting`");
while ($row=mysql_fetch_array($query))
{
echo '<option>'.$row[comment].'</option>';
}
?>
</select>
</td>
<td colspan="2">Status:
<select name="status">
<?php
$query=mysql_query("SELECT status FROM `status_hosting`");
while ($row=mysql_fetch_array($query))
{
echo '<option>'.$row[status].'</option>';
}
?>
</select>
</td>
</tr>
</table>
<input type="submit" name="Save" value="Save" onclick="cc()" />
<input type="submit" name="cancel" value="Cancel" />
</form>

Gvozd 21.10.2010 16:40

Цитата:

Сообщение от reinkarnator
насчет main.php,это гигантский файл,описывающий вызовы к базе. Написан чисто на PHP,поэтому переписывать его не вижу

я разве просил переписывать?О_0
я вообще-то попросил ссылку
если непонятно, то мне нужна на ваш сайт в инете, где крутится ваш код, чтобы мы могли глянуть, на вывод ошибок и провести трейсинг скрипта, раз уж вы с такой задач ей не справляетесь.
И если уж на то пошло:
скачайте фаербаг, и отлаживайте свой код.
явных ошибок у вас я не вижу кроме того, что xmlhttp ни разу не инициализирован с помощью getXmlhttp() или иной функции
не говоря уже об обработке
но тогда hosting.php уж точно сам не должен работать

reinkarnator 21.10.2010 18:10

Сайт на локалке,поэтому ссылку дать не могу.
Во вторых,вы правы,нигде нет инициализации getXmlhttp(),однако при работе с самим hosting.php её инициализация не понадобилась. Сней или без неё один и тот же эффект.

А что вы имете ввиду говоря "нет обработки"? Но сам hosting.php работает,это я вам точно говорю.

Gvozd 21.10.2010 23:45

ставьте фаербаг и отлаживайте.
этого за вас никто делать не будет

Цитата:

Сообщение от reinkarnator
А что вы имете ввиду говоря "нет обработки"? Но сам hosting.php работает,это я вам точно говорю.

вы посылаете ассинхронный запрос, и не выставляете ему функцию-обработчик.
то есть вы ничего не знаете об ответе, и ничего не можете с ним сделать

reinkarnator 22.10.2010 02:06

а привести пример обработки сможете?

Gvozd 22.10.2010 02:42

в любой статье
даже в приведенной вами ссылке.
читайте внимательнее, и не тратьте чужое время понапрасну.

Paguo-86PK 14.11.2010 23:54

Цитата:

Сообщение от reinkarnator
if ($action == 'add_host') {
include ("includes\add\hosting.php");
echo '<a href="'.$_SERVER['PHP_SELF'].'">Back</a>';
}

Сильно раздражает, когда в пути используется обратный слэш '\', так-как это всегда может привести к проблемам. Почему ни в какой литературе не указывается, что лучше лишний раз использовать '/' чем '\' и даже '\\'?
У меня в программах на Си всегда можно обнаружить и #include "../..etc" и т.д. вместо избыточного и неудобочитаемого #include "..\\..etc", а компилятор и не ругается. Плюс гарантия, если буду переделывать по *nix'ы, не нужно будет перелопачивать все пути!
А php и html это подавно касается! Юзайте / и только /, ведь \ - пережитки DOS! Может скоро и Винда будет работать с правильными путями:yes:


Часовой пояс GMT +3, время: 19:15.