我决定使用Ajax将表单发送到与其连接的PHP文件。 PHP可以正确接收值,但是在创建对数据库的查询时出现错误。 我想了解我哪里写错了,是否有人以后还能解释如何发送文件/ *图像。 谢谢。
PHP
<?php
if(isset($_POST['items']))
{
$arrayJSON = json_decode($_POST['items']);
$comune = $arrayJSON -> comune;
$indirizzo = $arrayJSON -> indirizzo;
$provincia = $arrayJSON -> provincia;
$email = $arrayJSON -> email;
$categoria = $arrayJSON -> categoria;
$foto = $arrayJSON -> foto;
$descrizione = $arrayJSON -> descrizione;
$gravita = $arrayJSON -> gravità;
$connessione = mysqli_connect('localhost','civicsensethecitizen','') or die (mysqli_errno ($connessione). mysqli_error ($connessione));
$db = mysqli_select_db($connessione, "my_civicsensethecitizen" ) or die ('Database non trovato!');
$data = date("d/m/Y");
$cdt= rand(10000,99999); //da aggiustare con un controllo
$query = "INSERT INTO Segnalazione (CDT , Gravità, Foto , Descrizione, Stato, Data, CDTKey, Categoria)
VALUES ('$cdt','$gravita', '$foto', '$descrizione', 'Attivo', '$data',' ', '$categoria')";
$risultato = mysqli_query($connessione,$query) or die ("Error in query: $query. " . mysqli_connect_error());
mysqli_close($connessione);
$response = "true";
}
else
{
$response = "false";
}
echo $response;
?>
JS和AJAX
$(function()
{
$('#formHomepage').on('submit', function(event)
{
if(Modernizr.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position)
{
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var bingResource = ajaxGeoReverse(latitude, longitude);
var comune = bingResource[0];
var indirizzo = bingResource[1];
var provincia = bingResource[2];
var email = $("#formHomepage input[name='email']").val();
var categoria = $("#formHomepage select[name='categoria'] :selected").val();
var foto = $("#formHomepage input[name='file']").val();
var descrizione = $("#formHomepage textarea[name='descrizione']").val();
var gravità = $("#formHomepage select[name='gravita'] :selected").val();
var segnalazione = {
"comune": comune, "indirizzo": indirizzo,
"provincia": provincia, "email": email,
"categoria": categoria, "foto": foto,
"descrizione": descrizione, "gravità": gravità
};
$.ajax(
{
type: 'POST',
url: 'https://civicsensethecitizen.altervista.org/php/formSegnalazione.php',
data: {items: JSON.stringify(segnalazione)},
dataType: 'json',
success: function(data)
{
console.log("data:" + data);
},
error: function()
{
alert('Connsessione non riuscita');
$('#formHomepage input').text('');
}
});
});
}
event.preventDefault();
});
});
功能JAVASCRIPT
function ajaxGeoReverse(latitude, longitude)
{
var bingResource = [];
$.ajax(
{
url: 'https://dev.virtualearth.net/REST/v1/Locations/' + latitude + ',' + longitude,
async: false,
data: {
key: 'MyKey',
o: 'json'
},
success: function(data)
{
var result = data.resourceSets[0];
if (result)
{
if (result.estimatedTotal > 0)
{
var comune = JSON.stringify(result.resources[0].address.locality);
var indirizzo = JSON.stringify(result.resources[0].address.addressLine);
var provincia = JSON.stringify(result.resources[0].address.adminDistrict2);
bingResource = [comune, indirizzo, provincia];
}
}
},
error: function()
{
failGeo();
}
});
return bingResource;
};
HTML
<form class="d-flex flex-column align-items-center" method="post" id="formHomepage" style="padding: 15px;background-color: #ffffff;box-shadow: 0px 0px 1em black;padding-top: 30px;padding-bottom: 20px;">
<div class="form-group"><input class="form-control" type="email" name="email" required="" placeholder="Email" maxlength="30" autocomplete="on" style="min-width: 250px;"></div>
<div class="form-group d-flex flex-column align-items-center"><a class="text-monospace d-flex flex-column align-items-center align-self-center form-btn" href="#" id="fotocamera-button" style="color: #666666;text-decoration: none;border-radius: .25rem;border: 1px solid #ced4da;margin: 10px;padding: 5px;"><i class="fa fa-camera form-btn" style="color: #666666;font-size: 45px;"></i><label class="form-btn" for="fileInput">Carica/Scatta Foto</label></a>
<input
type="file" accept="image/*" name="file" required="" id="fileInput" style="border: none;width: 0px;height: 0px;"><img class="img-thumbnail d-none" src="#" id="foto-screen" style="max-height: 150px;max-width: 150px;"></div>
<div class="form-group"><select class="form-control" name="categoria" required="" style="min-width: 250px;"><optgroup label="Seleziona il problema"><option value="mantoStradale" selected="" >Manto Stradale</option><option value="idrico">Idrico</option><option value="luceGas">Luce e Gas</option><option value="rfifiuti">Rifiuti</option><option value="telecomunicazioni">Telecomunicazioni</option></optgroup></select></div>
<div
class="form-group"><select class="form-control" name="gravita" style="min-width: 250px;"><optgroup label="Seleziona la tua gravità"><option value="gravitaAlta" selected="">Gravità Alta</option><option value="gravitaMedia">Gravità Media</option><option value="gravitaBassa" >Gravità Bassa</option></optgroup></select></div>
<div
class="form-group"><textarea class="form-control" rows="5" name="descrizione" placeholder="Descrizione" maxlength="120" style="min-width: 250px;"></textarea></div>
<div class="d-flex flex-row"><button class="btn btn-primary btn-lg" type="submit" style="background-color: #eebd40;font-weight: bold;margin: 5px;">Invia Segnalazione</button><button class="btn btn-primary btn-lg" type="reset" style="background-color: #eebd40;font-weight: bold;margin: 5px;">Reset</button></div>
</form>