初めて ajax フォームを作成しようとしていますが、うまくいきません。POST メソッドを使用していくつかの値を .php ファイルに送信し、いくつかの計算を行い、結果を取得することになっています。何らかの理由で、php コードで値を取得する方法が見つかりません。print_r ($_POST) を使用すると、フォームに挿入されたすべての値を確認できますが、$_POST['input_name'] を使用してそれらを取得しようとすると、「未定義のインデックス」エラー メッセージが表示されます:SI don't know what I間違っているので、助けていただければ幸いです。私が使用しているコードは次のとおりです。
JQuery/Ajax:
$().ready(function() {
$("#formulario").validate();
});
function calcularR(){
if ($('#formulario').valid() )
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("calculo").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","calcularT.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
var form = document.getElementById('formulario');
var formData = new FormData(form);
xmlhttp.send(formData);
}
}
HTML:
<form id="formulario" name="formulario" method="post" action="enviarR.php" enctype="application_x-www-form-urlencoded">
<div id="bulto1" class= "bult1">
<label class="form-label-top" id="label_alto" >Alto (cm)</label>
<input type="text" class="required" id="alto1" name="alto1" size="21" maxlength="6" value = "" />
<label class="form-label-top" id="label_largo" for="input_26">Largo (cm)</label>
<input type="text" class="required" id="largo1" name="largo1" size="21" maxlength="6" value = "" />
<label class="form-label-top" id="label_ancho" for="input_27">Ancho (cm)</label>
<input type="text" class="required" id="ancho1" name="ancho1" size="21" maxlength="6" value = "" />
</div>
<input type="button" name="calcular" id="calcular" value="Calcular" onclick="calcularR()">
<input type="submit" name="enviar" id="enviar" value="Entrar">
</form>
<div id="calculo" name="calculo"><b> </b></div>
PHP (calcularT.php)
if(isset($_POST['largo1']) && !empty($_POST['largo1'])){
$largo = $_POST['largo1'];
if(isset($_POST['ancho1']) && !empty($_POST['ancho1'])){
$ancho = $_POST['ancho1'];
if(isset($_POST['alto1']) && !empty($_POST['alto1'])){
$alto = $_POST['alto1'];
$t = calcularP($largo, $ancho, $alto);
echo "Resultado: ".$t."<br/>";
}else{
echo "alto required <br/>";
}
}else{
echo "ancho required<br/>";
}
}else{
echo "largo required<br/>";
}
これはコードの一部です。まず、フォームデータを送信してみます
var alto = document.getElementById("alto").value;
var ancho = document.getElementById("ancho").value;
xmlhttp.send("alto="+alto+"&ancho="+ancho);
それ以外の
var formData = new FormData(form);
xmlhttp.send(formData);
それは問題なく機能しましたが、フォームにはより多くの入力があり、それらの一部は常に送信されるとは限らないため、代わりに formData を使用する方が良いと思いましたが、前述のように、php で値を取得する方法が見つかりませんコード。事前に感謝し、私の基本的な/下手な英語を許してください(これは私の母国語ではありません.私もそれを学んでいます:P)