Ich erstelle ein Ajax-Skript, um einige Felder in der Datenbank zu aktualisieren. Ich habe es zu einem Punkt gebracht, wo es funktionierte, aber es schickte den Benutzer an das PHP-Skript, anstatt auf der Seite zu bleiben, so dass ich etwas gegoogelt hatte, und die Leute schlugen vor, entweder return false zu verwenden; oder e.preventDefault() jedoch, wenn ich dies tue, bricht es das PHP-Skript auf der anderen Seite und gibt einen schwerwiegenden Fehler zurück. Ich könnte etwas sein neueres zu AJAX fehlt aber es sieht alles richtig zu mire.preventDefault/return false bricht das Ajax-Skript richtig ab
JS:
$(document).ready(function() {
var form = $('form#edit_child_form'),
data = form.serializeArray();
data.push({'parent_id': $('input[name="parent_id"]').val()});
$('#submit_btn').on('click', function(e) {
e.preventDefault();
$.ajax({
url: form.prop('action'),
dataType: 'json',
type: 'post',
data: data,
success: function(data) {
if (data.success) {
window.opener.$.growlUI(data.msg);
}
},
error: function(data) {
if (!data.success) {
window.opener.$.growlUI(data.msg);
}
}
});
});
})
AJAX:
<?php
//mysql db vars here (removed on SO)
$descriptions = $_GET['descriptions'];
$child_id = $_GET['child_id'];
$parent_id = $_GET['parent_id'];
$get_child_ids = $dbi->query("SELECT child_ids FROM ids WHERE parent = ". $parent_id ." ORDER BY id"); //returns as object
$count = 0;
$res = array();
while ($child_row = $get_child_ids->fetch_row())
{
try
{
$dbi->query("UPDATE ids SET description = '$descriptions[$count]', child_id = '$child_id[$count]' WHERE parent_id = $child_row[0]");
$res['success'] = true;
$res['msg'] = 'Success! DDI(s) updated';
} catch (Exception $e) {
$res['success'] = true;
$res['msg'] = 'Error! '. $e->getMessage();
}
$count++;
}
echo json_encode($res);
es ist wahrscheinlich etwas wirklich klein, dass ich gerade verpasst haben, aber nicht sicher was - irgendwelche Ideen?
was es auf anderen Seite bricht
Sie können nur das ändern? Nach Ajax bist du auf derselben Seite, was bricht dann? – ScanQR
Was ist der schwerwiegende Fehler, den Sie bekommen? –
, dass die Abfrage fehlschlägt, wenn ich Vars dump die Vars sie alle null mit e.preventDefault zurückgeben – TT120