简体   繁体   English

Ajax .serializeArray()函数和其他内容

[英]Ajax .serializeArray() function and other stuff

I have a problem with this code, the problem is with the $.ajax in function modificaAssenza and the data that I send to the server, if I click on the checkbox "giustificaAssenza" the name="giustificaAssenza" and value="1" caught by serializeArray are memorized into formData but in php the code inside if(isset($_POST['giustificaAssenza')) never execute. 我对此代码有问题,问题出在函数modificaAssenza中的$ .ajax和发送到服务器的数据上,如果我单击复选框“ giustificaAssenza”,名称为“ giustificaAssenza”,值为“ 1”被serializeArray捕获的存储在formData中,但是在php中, if(isset($_POST['giustificaAssenza'))永远不会执行。 I've also try to see the content of formData variable after send data to the server and all data is correctly memorized into the array, but when I send data to server it seems that the data memorized with this instruction formData.push($('#form_assenza').serializeArray()); 在将数据发送到服务器后,我也尝试查看formData变量的内容,并将所有数据正确地存储到数组中,但是当我将数据发送到服务器时,似乎已使用此指令formData.push($('#form_assenza').serializeArray()); doesn't be send to the server anymore. 不再发送到服务器了。

HTML: HTML:

<form id="form_assenza" action="">
<p>
<span id="giustificaAssenza">Giustifica Assenza: <input type="checkbox" name="giustificaAssenza" value="1"></span>
<span id="minutiRitardo">Minuti Ritardo: <input type="text" value="0"></span>
<span id="oraEntrata">Ora Entrata:</span>
<span id="giustificaEntrata">Giustifica Entrata: <input type="checkbox" name="giustificaEntrata" value="1"></span>
<span id="oraUscita">Ora Uscita:</span>
<span id="giustificaUscita">Giustifica Uscita: <input type="checkbox" name="giustificaUscita" value="1"></span>
<span id="counter"></span><textarea name="annotazione" id="note" rows="4" cols="35"></textarea>
<span id="submitAssenza"></span>
</p>
</form> 

JAVASCRIPT CODE JAVASCRIPT代码

            $("input[name='modificaAssenza']").click(function(evento){
                evento.preventDefault();



                var formData=Array();
                formData.push({name:'tipoAssenza', value:'A'},{name:'operazione',value:'modificaAssenza'},{name:'codiceFiscale',value: 'guom'},{name:'idAssenza',value: '2'},{name:'data',value: '01/02/2013'});
                formData.push({ name: this.name, value: this.value });
                formData.push($('#form_assenza').serializeArray());

                modificaAssenza(formData);
            }});
function modificaAssenza(dati){
    $.ajax({
            url:"responseregistrodocente.php",
            data:dati,
            type:"POST",
            success: function (html) {

                alert(html);
                /*if(html!="")
                {
                    alert (html);
                }
                else{
                    alert("L'operazione &egrave; andata a buon fine premendo ok si riaggiorner&agrave; la pagina");
                    location.reload();
                }*/
            },
            error: function(error){
                //XMLREQQUESTOBJECT
                alert("Errore nell' invio dei dati");

            },
            cache:false,
            ifModified:false
        });

}

PHP: PHP:

if(isset($_POST['operazione']) && $_POST['operazione']==="modificaAssenza")
{

    try{
    if(isset($_POST["idAssenza"]) && isset($_POST["codiceFiscale"]) & isset($_POST["data"]) && isset($_POST['tipoAssenza'])){

    //prima mi creo l'assenza appena passata
    $idAssenza=$_POST["idAssenza"];
    $studente_codiceFiscale=$_POST["codiceFiscale"];
    $data=new DateTime(date($_POST["data"]));
    $data=$data->format("Y-m-d");
    $tipoAssenza=$_POST["tipoAssenza"];
    $giustificaAssenza=0;
    if(isset($_POST['giustificaAssenza'])){

        echo("test");
        $giustificaAssenza=(int)$_POST['giustificaAssenza'];
    }

    $minutiRitardo=null;
    if(isset ($_POST['minutiRitardo']) && $_POST['minutiRitardo']>0)
    {
       $minutiRitardo=(int)$_POST['minutiRitardo'];
    }
    $oraEntrata=null;
    if(isset($_POST['oraEntrata']) && $_POST['oraEntrata']!="undefined")
    {
        $oraEntrata=$_POST['oraEntrata'];
    }
    $giustificaEntrata=0;
    if(isset($_POST['giustificaEntrata'])){
        $giustificaEntrata=(int)$_POST['giustificaEntrata'];
        }

    $oraUscita=null;
    if(isset($_POST['oraUscita']) && $_POST['oraUscita']!="undefined"){
        $oraUscita=$_POST['oraUscita'];
    }
    $giustificaUscita=0;
    if(isset($_POST['giustificauscita'])){
        $giustificaUscita=(int)$_POST['giustificaUscita'];
        }
    $annotazione=null;
    if(isset($_POST['annotazione'])&& $_POST['annotazione']!=""){
        $annotazione=trim($_POST['annotazione']);
        echo("prova2");
    }

    $assenza_update=new Assenza($idAssenza,$studente_codiceFiscale,$data,$tipoAssenza,$giustificaAssenza,$minutiRitardo,$oraEntrata,$giustificaEntrata,$oraUscita,$giustificaUscita,$annotazione);
    //updateAssenza($conn,$assenza_update,$_SESSION['codiceFiscale'],$_SESSION['corso'],$_SESSION['classe']);
    }
    else{
        throw new Exception("Impossibile accedere alla data o all'id-Assenza o al codice fiscale");
    }
}
catch(Exception $e){
    $query="UNLOCK TABLES;";
    mysqli_query($conn,$query);
    echo($e->getMessage());

}
}

Modify: 修改:

formData.push($('#form_assenza').serializeArray());

With: 带有:

formData.push({ name: 'form_assenza_serialized', value: $('#form_assenza').serializeArray() });

And read it with $_POST['form_assenza_serialized'] this will contain a JavaScript array. 并使用$_POST['form_assenza_serialized']读取,它将包含一个JavaScript数组。

I think you better use serilize as explained here: posting jquery .serializeArray(); 我认为您最好按照下面的说明使用serilize发布jquery .serializeArray(); output through ajax 通过ajax输出

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM