我正在尝试执行一个计划程序,我想用Ajax在我的数据库中插入几个小时。
如果我自己插入(硬编码)一切都很好。但是当我需要使用我的数组时,看起来json正在改变它,我的第一个位置不再是正确的,如果我插入11:00,它只将00:00:01放入我的数据库。
这是我的JQuery / Ajax
<script type='text/javascript'>
$("#btnExporter").click(function(){
//It create an array of vals from my input (if i do an alert, it works )
var listeElement= $("input[type='text'].inputTableau")
.map(function(){return $(this).val();}).get();
$.ajax({ // préparation et appel AJAX
url: "/ajax/Exporter.php",
type: "POST",
data: ({nomModele: $('#txtNomExporter').val(), arrayExportation: listeElement, departement : $('#listeDepartement').val()}), //On envoie le contenu des inputs
dataType: "json",
async:false,
success:
function(){ // SUCCES: On avertie que la sauvegarde a fonctionne
alert('Exportation réussi');
},
error: function(xhr, ajaxOptions, thrownError) { // ERREUR AJAX, affiche le status et l'erreur
alert(' Erreur : ' + xhr.status + '\n' + thrownError);
}
});
});
</script>
这是我的PHP
<?php
session_start();
include_once("../includes/errorFct.inc");
include_once("../includes/identFct.inc");
include_once("../includes/fctPhpAdm.php");
$ListeChamps = $_POST['arrayExportation'];
//Name of the schedule
$nomModele = $_POST['nomModele'];
//Departement id
$departementid = $_POST['departement'];
//The array that contains the hours
$ListeChamps = $_POST['arrayExportation'];
// Faire la connexion et en cas d'erreur en avertir l'utilisateur
global $dbhost, $dbuser, $dbpass, $db;
$dbc = mysql_connect($dbhost, $dbuser, $dbpass)
or die('La base de donn�e semble down.');
if ($db!='' and !@mysql_select_db($db))
die('La base de donn�e est inaccessible.');
//This is working well
//$sql = mysql_query("INSERT INTO MODEL_HORAIRE(idDepartement, Nom, HeureDebutLundi) VALUES (3,'Allo', '11:00');");
$sql = mysql_query("INSERT INTO MODEL_HORAIRE(idDepartement, Nom, HeureDebutLundi) VALUES ($departementid,'$nomModele', '$ListeChamps[0]');");
$dbc->query($sql)
?>
非常感谢你的帮助!
编辑 :我忘了问我想要什么哈哈,我想知道是否可以像我们想的那样保留我的阵列,以及如何我可以保持我的时间,就像他们在我的输入(11:00而不是00:01)。
再次感谢!
答案 0 :(得分:0)
我发现为什么3小时之后,我会为其他人提供解决方案,这可能需要和我一样。当你在AJAX中推送它时,JSON对数组有一些问题。您只需要使用JSON.stringify()推送数组并在PHP中将其展开,这就是它现在的样子 - &gt;
Jquery:
var listeElement= $("input[type='text'].inputTableau")
.map(function(){return $(this).val();}).get();
var jsonText = JSON.stringify(listeElement);
$.ajax({ // préparation et appel AJAX
url: "/ajax/Inscrire.php",
type: "POST",
data: ({action : "set_Inscription", arrayExportation : jsonText, departement : $('#listeDepartement').val(), employe : $('#listeEmployes').val(),
dateHoraire : $('#jour').val(), projet : $('#listeProjet').val(), note : $('#txtNote').val()}),
dataType: "json",
async:false,
success:
function(data)
{
alert(data); // SUCCES: On avertie que la sauvegarde a fonctionne
},
error: function(xhr, ajaxOptions, thrownError) { // ERREUR AJAX, affiche le status et l'erreur
alert(' Erreur : ' + xhr.status + '\n' + thrownError);
}
});
PHP
$ListeChamps = $_POST['arrayExportation'];
$ListeChamps = str_replace('\"',"",$ListeChamps);
$ListeChamps = str_replace('[',"",$ListeChamps);
$ListeChamps = str_replace(']',"",$ListeChamps);
$ValeurTerminale = explode(',', $ListeChamps);
for($i=0;$i<count($ValeurTerminale);$i++)
{
$ValeurTerminale[i] = mysql_real_escape_string($ValeurTerminale[i]);
}
现在我们有一个PHP数组! 之前,它是一个单独的字符串,所以我得到了我的字符串的第一个字符。这就是为什么它是00:00:01而不是11:00:00。