|
|
|
| Приветствую.
В общем уже кипит голова. На работе дали задание сделать онлайн калькулятор для полиграфии. В интернете такой скрипт стоит около 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,
);
?>
|
Очень буду благодарен, даже если прочтете этот пост =] | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 11:02)
| | Можете ли привести пример использования jquery для select, checkbox. и чтоб при onchange каждого элемента происходила отправка на php файл.
спасибо. | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 11:24)
| | все отлично работает. то что нужно. спасибо огромное =] | |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 11:24)
| | проблемы с кодировкой =\ | |
|
|
|
|
|
|
|
для: Antohins
(19.03.2008 в 11:39)
| | Данные их аякса всегда приходят в кодировке UTF-8. И, соответственно, отправлять ответ на ajax-запрос нужно в кодировке UTF-8. | |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 11:58)
| | а почему в ие не работает? =\ | |
|
|
|
|
|
|
|
для: Antohins
(19.03.2008 в 12:42)
| | У меня всё прекрасно работает. IE7. | |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 14:04)
| | ie 6
абсолютно ничего не происходит((
ошибок не показывает даже... | |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 11:24)
| | и данный код почему то не работает на IE =\
на firefox все норм, а на ие нет =\ | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: Саня
(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;
}
?>
|
| |
|
|
|
|
|
|
|
для: 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. | |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 14:26)
| | Всеравно не работает (((
в чем еще могут быть проблемы? | |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 14:26)
| | и кодировка всеравно не работает =\ | |
|
|
|