Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ajax =\
 
 автор: Antohins   (19.03.2008 в 10:54)   письмо автору
 
 

Приветствую.

В общем уже кипит голова. На работе дали задание сделать онлайн калькулятор для полиграфии. В интернете такой скрипт стоит около 20к рублей =\

На javascript не решился делать, потому что специализируюсь в основном на php.

Многовато условий слишком. Решил сделать с применением ajax. Использовал библиотеку dklab.

Для каждого checkbox и select делал свою функцию отправки и свой .php файл-обработчик

В общем вот отправки:

    function second() {
        JsHttpRequest.query(
            'backend1.php', // backend
            {
                // pass a text value 
                'str': document.getElementById("plot").value
            },
            // Function is called when an answer arrives. 
            function(result, errors) {
                // Write the answer.
                document.getElementById("ans").innerHTML = 
                    'отослали "'+ document.getElementById("plot").value + '" получили "' + result["resultado"]+'"';
            alert(result["sum"]);},
            false  // do not disable caching
        );

    }


Это только для одного select

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

Вот мой код php файла:
<?
require_once "JsHttpRequest/JsHttpRequest.php";
$JsHttpRequest =& new JsHttpRequest("windows-1251");
// Fetch request parameters.
$str $_REQUEST['str'];
// Create the resulting array.

        
$GLOBALS['_RESULT'] = array(
      
"resultadokras"   => $str,
    );
?>


Очень буду благодарен, даже если прочтете этот пост =]

   
 
 автор: Саня   (19.03.2008 в 11:02)   письмо автору
 
   для: Antohins   (19.03.2008 в 10:54)
 

Советую использовать jquery.

var post = {plot: $("#plot").val(),
            param2: $("#param2").val(),
            param3: $("#param3").val(),
            param4: $("#param4").val()};

$.post("урл, куда отправляются данные", post, function(data){
  $("#debug").html(data);
});

Форма, например, такая:
Плот: <input type="text" id="plot"><br/>
Параметр2: <input type="text" id="param2">
и т. д.
<div id="debug">окошечко для дебага</div>

   
 
 автор: Antohins   (19.03.2008 в 11:06)   письмо автору
 
   для: Саня   (19.03.2008 в 11:02)
 

Можете ли привести пример использования jquery для select, checkbox. и чтоб при onchange каждого элемента происходила отправка на php файл.

спасибо.

   
 
 автор: Саня   (19.03.2008 в 11:24)   письмо автору
 
   для: Antohins   (19.03.2008 в 11:06)
 

<?
if ( isset($_GET['ajax']) ) {
  print 
iconv("WINDOWS-1251""UTF-8""Приняты данные: ").$_POST['p']."<br/>";
  print 
iconv("WINDOWS-1251""UTF-8""ID принятого элемента: ").$_POST['id']."<br/>";
  exit;
}
?>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function sendData(obj) {
  var post = {p: obj.value, id: obj.id};
  $.post('index.php?ajax=true', post, function(data){$('#debug').html(data);})
}
</script>
<select id="p" onchange="sendData(this)">
<option value="par1">Параметр 1</option>
<option value="par2">Параметр 2</option>
<option value="par3">Параметр 3</option>
</select><br/>
<input type="checkbox" id="chckbx" onchange="sendData(this)">
<div id="debug"></div>

   
 
 автор: Antohins   (19.03.2008 в 11:31)   письмо автору
 
   для: Саня   (19.03.2008 в 11:24)
 

все отлично работает. то что нужно. спасибо огромное =]

   
 
 автор: Antohins   (19.03.2008 в 11:39)   письмо автору
 
   для: Саня   (19.03.2008 в 11:24)
 

проблемы с кодировкой =\

   
 
 автор: Саня   (19.03.2008 в 11:58)   письмо автору
 
   для: Antohins   (19.03.2008 в 11:39)
 

Данные их аякса всегда приходят в кодировке UTF-8. И, соответственно, отправлять ответ на ajax-запрос нужно в кодировке UTF-8.

   
 
 автор: Antohins   (19.03.2008 в 12:42)   письмо автору
 
   для: Саня   (19.03.2008 в 11:58)
 

а почему в ие не работает? =\

   
 
 автор: Саня   (19.03.2008 в 14:04)   письмо автору
 
   для: Antohins   (19.03.2008 в 12:42)
 

У меня всё прекрасно работает. IE7.

   
 
 автор: Antohins   (19.03.2008 в 14:06)   письмо автору
 
   для: Саня   (19.03.2008 в 14:04)
 

ie 6
абсолютно ничего не происходит((
ошибок не показывает даже...

   
 
 автор: Antohins   (19.03.2008 в 11:52)   письмо автору
 
   для: Саня   (19.03.2008 в 11:24)
 

и данный код почему то не работает на IE =\
на firefox все норм, а на ие нет =\

   
 
 автор: Саня   (19.03.2008 в 11:57)   письмо автору
 
   для: Antohins   (19.03.2008 в 11:52)
 

Для чекбокса лучше onclick обрабатывать. И перехватывать obj.checked.
Например так:
<?
if ( isset($_GET['ajax']) ) {
  print 
iconv("WINDOWS-1251""UTF-8""Приняты данные: ").$_POST['p']."<br/>";
  print 
iconv("WINDOWS-1251""UTF-8""ID принятого элемента: ").$_POST['id']."<br/>";
  exit;
}
?>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function sendData(val, id) {
  var post = {p: val, id: id};
  $.post('index.php?ajax=true', post, function(data){$('#debug').html(data);})
}

</script>
<select id="p" onchange="sendData(this.value, this.id)">
<option value="par1">Параметр 1</option>
<option value="par2">Параметр 2</option>
<option value="par3">Параметр 3</option>
</select><br/>
<input type="checkbox" id="chckbx" onclick="sendData(this.checked, this.id)">
<div id="debug"></div>

   
 
 автор: Antohins   (19.03.2008 в 14:16)   письмо автору
 
   для: Саня   (19.03.2008 в 11:57)
 

Посмотрите пожалуйста прикрепленный файл

вот backend.php :

<?
if ( isset($_GET['ajax']) ) {
    print 
"Приняты данные: ";
  print 
iconv("WINDOWS-1251""UTF-8"$_POST['p']);
      print 
"<br>ID принятого элемента: ";
  print 
iconv("WINDOWS-1251""UTF-8"$_POST['id']);
  exit;
}
?> 

   
 
 автор: Саня   (19.03.2008 в 14:26)   письмо автору
 
   для: Antohins   (19.03.2008 в 14:16)
 

Я вот думаю, что может быть дело в совмещении POST и GET запросов.

Отсылку запроса попробуйте сделать такую:
$.post('backend.php', post, function(data){$('#debug').html(data);})

А сам скрипт:
<? 
print iconv("WINDOWS-1251""UTF-8""Приняты данные: "); 
print 
$_POST['p'];
print 
iconv("WINDOWS-1251""UTF-8""<br>ID принятого элемента: "); 
print 
$_POST['id'];

Проблема ваша с кодировкой такая, что вы перекодируете приходящие данные в UTF-8, тогда как они уже изначально UTF-8. А "Принятые данные" и "ID принятого элемента" отдаёте как есть, то есть WINDOWS-1251.

   
 
 автор: Antohins   (19.03.2008 в 14:34)   письмо автору
 
   для: Саня   (19.03.2008 в 14:26)
 

Всеравно не работает (((

в чем еще могут быть проблемы?

   
 
 автор: Antohins   (19.03.2008 в 15:01)   письмо автору
 
   для: Саня   (19.03.2008 в 14:26)
 

и кодировка всеравно не работает =\

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования