2016-12-14 2 views
0

Ich habe eine Liste von der Datenbank und ich möchte Bearbeitungsfunktionalität implementieren, wo beim Klicken auf eine Tabellenspalte die Spalte bearbeitet werden kann und beim Klicken aus Spalte, der Wert aktualisiert wird.Partielle Aktualisierung einer Liste mit AJAX

Ich habe AJAX für diesen Zweck verwendet. Mein Code ist wie unter:

page1.php

<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
<script> 
function showEdit(editableObj) 
{ 
$(editableObj).css("background","#FFF"); 
} 
function saveToDB(editableObj,column,id) 
{ 
$.ajax(
{ 
    url: "page2.php", 
    type: "POST", 
    data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id, 
    success: function(data) 
    { 
    $(editableObj).css("background","#FDFDFD"); 
    }   
}); 
} 
</script> 

Die Säule meiner Tabelle ist wie unter:

<td contenteditable="true" onBlur="saveToDB(this, 'exmid','<?php echo $p0; ?>')" 
     onClick="showEdit(this);"><?php echo $p3 ?> 

Hinweis: $ p0 enthält die Seriennummer der Reihe von mysql Datenbanktabelle und $ p3 enthält den angezeigten Text.

Der Code für page2.php ist:

<?php 
include_once 'includes/db_connect.php'; 
?> 
<?php 
$result = mysql_query("UPDATE examlist1 set " . $_POST["column"] . " =  '".$_POST["editval"]."' WHERE sno=".$_POST["id"]); 
?> 

Problem: Wenn ich auf die Spalte klicken, um es editierbar wird. Mit alert() innerhalb saveToDB() Ich habe überprüft, dass die Funktion auf Klick aus der Säule und auch Werte von Spalt und id korrekt sind aufgerufen wird.

Dann habe ich versucht, die alert() Funktion innerhalb $ .ajax und es wurde nicht genannt. Ich bin mir nicht sicher, ob Ajax läuft oder nicht. Dies ist das erste Mal, dass ich versuche, Ajax in einem PHP-Code selbst zu verwenden.

Bitte schlagen Sie vor, was ist das Problem und was ist die Lösung? Der Code wird auf einem Linux-basierten Server unter Godaddy mit PHP 5.4 implementiert.

Auch ich möchte die Hintergrundfarbe auf Fehler setzen. Wie schreibt man es in einen Ajax-Block?

+0

Firebug Add-on-Erweiterung auf Ihrem Browser hinzufügen. Und sehen Sie, was dort passiert mit Firebug Inspect. –

Antwort

1

Wenn Sie die richtigen Werte beim Alerting erhalten.In Ihrer page2.php. Verwenden Sie mysqli anstelle von mysql und verwenden Sie auch $connection Objekt in mysqli_query().

<?php 
include_once 'includes/db_connect.php'; 
$column=$_POST["column"]; 
$editval=$_POST["editval"]; 
$id=$_POST["id"]; 
$result = mysqli_query($connection,"UPDATE examlist1 SET $column='$editval' WHERE sno=$id");//$connection is database connection variable 
if ($result) 
{ 
    echo json_encode(array('success'=>true)); 
} 
else 
{ 
    echo json_encode(array('success'=>false)); 
} 
?> 

Dies ist Javascript: 100% Arbeiten Versuchen (Definieren Sie, was Sie auf if/else Aussage wollen)

<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
<script> 
function showEdit(editableObj) 
{ 
$(editableObj).css("background","#FFF"); 
} 
function saveToDB(editableObj,column,id) 
{ 
$.ajax(
{ 
    url: "page2.php", 
    type: "POST", 
    data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id, 
    success: function(data) 
    { 
    var res=eval(data); 
    //if success then 
    if (res.success) 
    { 
     //write JS code that you want after successful updation 

    $(editableObj).css("background","#FDFDFD"); //<- according to problem 
    } 
    //if fails then 
    else 
    { 
     //write JS code that you want after unsuccess 
    } 
    }   
}); 
} 
</script> 
+0

auf der Ajax Calling-Funktion, wie überprüfe ich für den Erfolg fehlgeschlagen? – ITSagar

+0

Ich fand es ... danke. Ist das der richtige Weg? Fehler: Funktion (Daten) { \t \t \t \t \t $ (editableObj) .css ("Hintergrund", "rot"); $ (editableObj) .css ("color", "white"); \t \t \t \t} – ITSagar

+0

@ITSagar Ich habe die 'Javascript' bearbeitet. Versuchen Sie es..arbeiten zu genießen und stimmen Danke. –

Verwandte Themen