Ошибка события JavaScript (Ошибка события JavaScript)
Цитата: Artsem от 23.01.2018, 22:41ПС
Коды которые в тексте написаны правильно и если где то кажется что не правильно типо пропустил знак > /" и т.д. то знайте защита сайта от взлома их переконвертировала!Есть код вывода стоимости теста:
<tr id="add<?=$t["id"];?>">
<form action="test.php" method="post">
<input id="money_<?=$t["id"]?>"type="hidden" value="10">
<input type="text" name="plan" id="plan_<?=$t["id"];?>"maxlength="6" size="4" value="2" onchange="many(<?=$t["id"];
?>);" onkeyup="many(<?=$t["id"];?
>);" autocomplete="off">
Стоимость заказа: <span id="price_<?=$t["id"];?>"
;
;;></span>
<input class="button-red" type="submit" title="Внести средства в бюджет площадки" value="Оплатить">
</form></tr>
<script>many(<?=$t["id"];?>);</script>
Скрипт события :function many(id) {
var price = document.getElementById('money_'+id).value*1,
plan = document.getElementById('plan_'+id).value;
$('#price_'+id).html((Math.round((price*plan)*10000)/10000) + ' руб.');
}
Когда заходишь на страницу пополнения теста стоимость теста показывает правильно и это 20 руб.
При нажатии на кнопку "Оплатить" я передаю запрос через POST, но ответ на действия передаю через json_encode:
Сокращенно без проверок:$plan= $_POST["plan"];
$sum = $plan*10;
$mysqli->query("UPDATE `tb_users` SET `money_cr` = `money_cr` - '".$sum."' WHERE `username`='$username' ");
//Ответ на действие пользователя(изменения баланса) без перезагрузки страницы и запуск функции many() что бы опять видеть стоимость
$suc .= "$('#add$id').load('test.php #add$id');many($id);";echo json_encode(array('suc' => iconv("UTF-8","UTF-8",$suc)));
Функция показа ответа:
$('tr').on('submit' function() {
var url = $(this).attr('action'),
$.ajax({
url: url,
type: 'POST',
data: $(this).serialize(),
dataType: 'json',
success: function (infa){eval(infa.suc);}
});
});После выполнения ответа стоимость теста на мгновение показывается а потом исчезает и остается пустой.
Вопрос почему стоимость не остается а исчезает, может я не так передаю на выполнение функцию many()?
ПС
Коды которые в тексте написаны правильно и если где то кажется что не правильно типо пропустил знак > /" и т.д. то знайте защита сайта от взлома их переконвертировала!
Есть код вывода стоимости теста:
t;
<form action="test.php" method="post">
<input id="money_<?=$t["id"]?>"
type="hidden" value="10">
<input type="text" name="plan" id="plan_<?=$t["id"];?>"
maxlength="6" size="4" value="2" onchange="many(<?=$t["id"];
?>);" onkeyup="many(<?=$t["id"];?
>);" autocomplete="off">
Стоимость заказа: <span id="price_<?=$t["id"];?>"
;
;;></span>
<input class="button-red" type="submit" title="Внести средства в бюджет площадки" value="Оплатить">
</form></tr>
<script>many(<?=$t["id"];?>)
;</script>
Скрипт события :
var price = document.getElementById('money_'+id).val
ue*1,
plan = document.getElementById('plan_'+id).valu
e;
$('#price_'+id).html((Math.round((price*
plan)*10000)/10000) + ' руб.');
}
Когда заходишь на страницу пополнения теста стоимость теста показывает правильно и это 20 руб.
При нажатии на кнопку "Оплатить" я передаю запрос через POST, но ответ на действия передаю через json_encode:
Сокращенно без проверок:
$sum = $plan*10;
$mysqli->query("UPDATE `tb_users` SET `money_cr` = `money_cr` - '".$sum."' WHERE `username`='$username' ");
//Ответ на действие пользователя(изменения баланса) без перезагрузки страницы и запуск функции many() что бы опять видеть стоимость
$suc .= "$('#add$id').load('test.php #add$id');many($id);";
echo json_encode(array('suc' => iconv("UTF-8","UTF-8",$suc)));
Функция показа ответа:
var url = $(this).attr('action'),
$.ajax({
url: url,
type: 'POST',
data: $(this).serialize(),
dataType: 'json',
success: function (infa){eval(infa.suc);}
});
});
После выполнения ответа стоимость теста на мгновение показывается а потом исчезает и остается пустой.
Вопрос почему стоимость не остается а исчезает, может я не так передаю на выполнение функцию many()?
Цитата: Angus123 от 23.01.2018, 22:55Если сайт коверкает исходники разместите их на этом ресурсе и сбросьте ссылки.
Если сайт коверкает исходники разместите их на этом ресурсе и сбросьте ссылки.
Цитата: nanotek от 24.01.2018, 11:33Ну для начала не так :
$suc .= "$('#add$id').load('test.php #add$id');many($id);";
а вот так:
$suc .= "$(#add+$id).load(test.php #add+$id);many($id);";
Затем что показывает лог в браузере?
В идеале кинь ссылку на сайт и страницу.
вообще на сколько я понял ты отправляешь запрос на ту же страницу где у тебя расположен скрипт? то есть обработка запроса на той же странице что и код вывода что по сути не есть хорошо, сделай отдельный файл для обработки php и просто передавай запросы даже не обязательно json так как ты передаёшь готовый html для этого можно использовать просто data и ненадо делать кнопку, смысл? вешай на onclick<div onclick="her('сюда id можно вешать','сюда второй параметр');">
function her('id','2'){
var s1 = $.trim($("#id_того в чём это число"+id).text()); // Получи начальное число
var s2 = $.trim($("#id_того в чём это число"+id).text()); // Получи прибавляемое или вычитаемое число
val1 = (s1*1 + s2*1); // Прибавь или вычти второе число
var plan = ($('#plan').val());
$.ajax({ // Отправь данные для обработки
url: /ссылка на отдельную страницу для обработки,
type: 'POST',
data: {'func' : 'her', 'plan' : plan},
beforeSend: function(){progress = true;},
success: function(data){
if(data == 1){
// Тут что хочешь после успешного выполнения функции her
$("#id_куда вставишь готовый результат вычисления").html(val1);
}
}
});
};// Сама обработка в отдельном файле
if($_POST['func'] == "her"){
$plan = проверка($_POST["plan"]);
n// и так далее
echo "1";
}Таким образом все подсчёты выполнит один скрипт и только при успешном выполнении обработчиком заданной ему функции.
P.S в исходный код не смог запилить так как всё почему то в одну строчку получилось
Ну для начала не так :
$suc .= "$('#add$id').load('test.php #add$id');many($id);";
а вот так:
$suc .= "$(#add+$id).load(test.php #add+$id);many($id);";
Затем что показывает лог в браузере?
В идеале кинь ссылку на сайт и страницу.
вообще на сколько я понял ты отправляешь запрос на ту же страницу где у тебя расположен скрипт? то есть обработка запроса на той же странице что и код вывода что по сути не есть хорошо, сделай отдельный файл для обработки php и просто передавай запросы даже не обязательно json так как ты передаёшь готовый html для этого можно использовать просто data и ненадо делать кнопку, смысл? вешай на onclick
<div onclick="her('сюда id можно вешать','сюда второй параметр');">
function her('id','2'){
var s1 = $.trim($("#id_того в чём это число"+id).text()); // Получи начальное число
var s2 = $.trim($("#id_того в чём это число"+id).text()); // Получи прибавляемое или вычитаемое число
val1 = (s1*1 + s2*1); // Прибавь или вычти второе число
var plan = ($('#plan').val());
$.ajax({ // Отправь данные для обработки
url: /ссылка на отдельную страницу для обработки,
type: 'POST',
data: {'func' : 'her', 'plan' : plan},
beforeSend: function(){progress = true;},
success: function(data){
if(data == 1){
// Тут что хочешь после успешного выполнения функции her
$("#id_куда вставишь готовый результат вычисления").html(val1);
}
}
});
};
// Сама обработка в отдельном файле
if($_POST['func'] == "her"){
$plan = проверка($_POST["plan"]);
n// и так далее
echo "1";
}
Таким образом все подсчёты выполнит один скрипт и только при успешном выполнении обработчиком заданной ему функции.
P.S в исходный код не смог запилить так как всё почему то в одну строчку получилось