Ich verwende ein CRUD-System in einer Website. Ich zeige eine Tabelle mit allen vorhandenen Aufzeichnungen (avisos.php). Wenn der Benutzer klickt auf der ADD NEW RECORD-Taste, folgende Skript gestartet wird:Aufruf einer Member-Funktion prepare() bei Null bei CRUD-System
$("#btn-add").click(function(){
$(".content-loader").fadeOut('slow', function()
{
$(".content-loader").fadeIn('slow');
$(".content-loader").load('nuevo_aviso.php');
$("#btn-add").hide();
$("#btn-view").show();
});
});
nuevo_aviso.php enthält ein HTML-Formular einen neuen Datensatz hinzuzufügen. Dies ist ihr Inhalt:
<div id="dis">
<!-- here message will be displayed -->
</div>
<form method='post' id='emp-SaveForm' action="#">
<table class='table table-bordered'>
<tr>
<td>Titulo</td>
<td><input type='text' name='titulo_anuncio' class='form-control' placeholder='EX : P.M.I. DUCTO DE JUAREZ' required /></td>
</tr>
<tr>
<td>Texto</td>
<td><input type='text' name='texto_anuncio' class='form-control' placeholder='EX : Mantenimiento preventivo el dia 17 de agosto' required></td>
</tr>
<tr>
<td colspan="2">
<button type="submit" class="btn btn-primary" name="btn-save" id="btn-save">
<span class="glyphicon glyphicon-plus"></span> Guardar Aviso/Anuncio
</button>
</td>
</tr>
</table>
</form>
Von hier eine JS-Datei (crud.js) von avisos.php genannt sollte die Formulardaten übergeben create_aviso.php: dies die Funktion bei crud.js ist:
<?php
require_once 'dbconfig.php';
if($_POST)
{
$titulo_anuncio = $_POST['titulo_anuncio'];
$texto_anuncio = $_POST['texto_anuncio'];
try{
$stmt = $db_con->prepare("INSERT INTO tbAnuncios(titulo_anuncio,texto_anuncio) VALUES(:etitulo, :etexto)");
$stmt->bindParam(":etitulo", $titulo_anuncio);
$stmt->bindParam(":etexto", $texto_anuncio);
if($stmt->execute())
{
echo "Registro añadido";
}
else{
echo "Error";
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}
?>
Das Problem besteht darin, dass der Browser in Zeile 12 von create_aviso.php wirft einen Fehler::
/* Data Insert Starts Here */
$(document).on('submit', '#emp-SaveForm', function() {
$.post("create_aviso.php", $(this).serialize())
.done(function(data){
$("#dis").fadeOut();
$("#dis").fadeIn('slow', function(){
$("#dis").html('<div class="alert alert-info">'+data+'</div>');
$("#emp-SaveForm")[0].reset();
});
});
return false;
});
und anschließend bei create_aviso.php die empfangenen Daten sollten in die Datenbank eingefügt werden
Fatal error: Aufruf an eine Elementfunktion herzustellen() auf null in /../create_aviso.php auf der Leitung 12. Diese Leitung 12 ist:
$stmt = $db_con->prepare("INSERT INTO tbAnuncios(titulo_anuncio,texto_anuncio) VALUES(:etitulo, :etexto)");
I die Daten überprüft und festgestellt, dass nur der Wert von $_POST['titulo_anuncio']
wird create_aviso.php
gegeben. $_POST['texto_anuncio']
wird nicht empfangen. Das sollte der Grund für die Ausnahme sein, aber ich finde den Fehler im Code nicht.
verwenden Ich benutze keine globalen Variablen, aber in Ihrem Fall versuchen Verwendung in Zeile 11 'global $ db_con' –
Haben Sie beobachtet empfehlen die AJAX-Anfrage/Antwort in den Browser-Entwickler-Tools? Haben Sie die jQuery-Bibliothek in das Projekt aufgenommen? Werden Fehler gemeldet? Laufen Sie das auf einem Webserver? –
Überprüfen Sie doppelt '$ (this) .serialize()', da das 'this' sich auf die Funktion '$ .post' bezieht. –