День добрый!
На страницы калькуляторы математические. У каждого кнопка, по которой отправляются данные формы.
Есть функция ниже. В функции парсю JSON массив, типа {answer1: 16, answer2: 0, answer3: 12, и т.д.}
В функцию, в параметр count передается число, соответствующее ключу массива (answer1 - 1, answer2 -2 и т.д.).
И на страницу мне нужно вывести значение массива, соответствующее калькулятору (кнопке, которая запускает скрипт).
Мне нужно чтобы элемент массива result.answer_item выбирался в зависимости от переданного значения count,
т.е. result.answer1, или result.answer2, и т.д. Но когда я присваиваю answer_item значение answer1 (или answer2), то значение становится строкой, ссылка на элемент массива result.answer_item( result.answer1) принимает значение undefined.
Что можно придумать, чтобы переменная answer была динамической, и менялась в зависимости от параметра count?
$( document ).ready(function() {
$("#btn1").click(
function(){
sendAjaxForm('formula1_result', 'formula1_form', 'math.php',1);
return false;
}
);
});
$( document ).ready(function() {
$("#btn2").click(
function(){
sendAjaxForm('formula2_result', 'formula2_form', 'math.php',2);
return false;
}
);
});
function sendAjaxForm(result_form, ajax_form, url, count) {
$.ajax({
url: url, //url страницы (action_ajax_form.php)
type: "POST", //метод отправки
dataType: "html", //формат данных
data: $("#"+ajax_form).serialize(), // Сеарилизуем объект
success: function(response) { //Данные отправлены успешно
result = JSON.parse(response);
console.log(result);
name_output_div= "#"+result_form;
answer_item='answer'+count;
console.log(result.answer_item);
answer=result.answer_item; ------------------- проблема здесь
$(name_output_div).text('Ответ: '+answer);
},
error: function(response) { // Данные не отправлены
$(name_output_div).text('Ошибка. Данные не отправлены.');
}
});
}
<body>
<h2>Математические формулы</h2>
<!---------------------- Квадрат суммы ------------------->
<p><strong>Квадрат суммы:</strong></p>
<form action="" method="post" id="formula1_form">
<ul>
<li class="math-item">
<label> Число a:
<input class="math-short-field" type="text" placeholder="2" name="formula1_a">
</label>
</li>
<li>
<label> Число b:
<input class="math-short-field" type="text" placeholder="5" name="formula1_b">
</label>
</li>
</ul>
<button type="submit" aria-label="Вычислить квадрат суммы" id="btn1">Вычислить квадрат суммы</button>
</form>
<div class="answer" id="formula1_result"></div>
<!---------------------- Квадрат разности ------------------->
<p><strong>Квадрат разности:</strong></p>
<form action="" method="post" id="formula2_form">
<ul>
<li class="math-item">
<label> Число a:
<input class="math-short-field" type="text" placeholder="2" name="formula2_a">
</label>
</li>
<li>
<label> Число b:
<input class="math-short-field" type="text" placeholder="5" name="formula2_b">
</label>
</li>
</ul>
<button type="submit" aria-label="Вычислить квадрат разности" id="btn2">Вычислить квадрат разности</button>
</form>
<div class="answer" id="formula2_result"></div>
<?
//Квадрат суммы
if (isset($_POST["formula1_a"]) && isset($_POST["formula1_b"]) || isset($_POST["formula2_a"]) && isset($_POST["formula2_b"]) ) {
$a = $_POST["formula1_a"];
$b = $_POST["formula1_b"];
$a2 = $_POST["formula2_a"];
$b2 = $_POST["formula2_b"];
$formula1 = pow($a,2) + 2*$a*$b + pow($b,2);
$formula2 = pow($a2,2)- 2*$a2*$b2 + pow($b2,2);
}
// Формируем массив для JSON ответа
$result = array(
'answer1' => $formula1,
'answer2' => $formula2
);
// Переводим массив в JSON
echo json_encode($result);
?>