Innerhalb einer PHP-Klasse definiere ich eine Tabelle, die eine Liste der Clients anzeigt, die man kontaktieren muss. In Spalte 7 habe ich eine Checkbox integriert, damit der Benutzer den Client anruft.Javascript-Funktion läuft nur einmal
Das Problem ist, dass die JS-Funktion führt die erstmalige und dann zum zweiten Mal heißt es: default.php page = _PhoneBankingP1: 1 Uncaught Reference: kontaktierten nicht definiert ist (...)
Die Module in Verwendung sind im folgenden aufgeführt:
public function phonebank($townCode,$streetCode){
$query = "SELECT clientId, clientFirstname1, clientLastname1, clientAddress, ";
$query .= " clientMailshot, clientPhone1, clientMobile1, clientContacted, min(clientDoB) ";
$query .= "FROM _clients ";
$query .= "WHERE _clients.streetCode = '{$streetCode}' and ";
$query .= " _clients.townCode = '{$townCode}' and ";
$query .= " _clients.GE = 'Y' ";
$query .= "GROUP BY clientAddress ";
$result = $this->db->query($query);
$output = "";
if ($result->num_rows > 0){
$output .= "<div class='alert alert-info'><strong>Information!</strong> All the residents shown below have been extracted from the last Electoral Register.</div>";
$output .= "<table class='table table-striped' style='font-size:10pt;' id='myTable' >";
$output .= "<thead>";
$output .= "<tr>";
$output .= "<th>ID #</th>";
$output .= "<th>Name</th>";
$output .= "<th>Address</th>";
$output .= "<th>T</th>";
$output .= "<th>Phone</th>";
$output .= "<th>Mobile</th>";
$output .= "<th class='text-center'>Contacted</th>";
$output .= "</tr>";
$output .= "</thead>";
$output .= "<tbody>";
while ($record = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$output .= "<tr>";
$output .= "<td><a href='default.php?page=_clientDetails&id=".$record['clientId']."&mode=edit' style='color: #000;'><span class='pb-clientId'>".$record['clientId']."</span></a></td>";
$output .= "<td><span class='pb-fullname'>".$record['clientFirstname1']." ".$record['clientLastname1']."</span></td>";
$output .= "<td>".$record['clientAddress']."</td>";
$output .= "<td>".$record['clientMailshot']."</td>";
$output .= "<td>".$record['clientPhone1']."</td>";
$output .= "<td>".$record['clientMobile1']."</td>";
// Makes a checkbox selected
if ($record['clientContacted'] == 'Y'){
$optContacted = ' checked ';
} else {
$optContacted = '';
}
//$output .= "<td class='text-center' ><button id='btn-contacted-".$record['clientId']."' onclick='street.clientContacted("{$record['clientId']}","{$record['clientContacted']}")' class='btn btn-success'>Contacted</button></td>";
$output .= "<td align='center'>";
$output .= "<input type='checkbox' id='col7-".$record['clientId']."' onclick='contacted("".$record['clientId']."");' value='1' ".$optContacted." />";
$output .= "</td>";
$output .= "</tr>";
}
$output .= "</tbody>";
$output .= "</table>";
$output .= "<br/>";
echo $output;
} else {
echo "No Clients Found in this street";
}
}
Dann wird der Test JS-Funktion benötigt die MYSQL zu aktualisieren:
function contacted(id) {
var clientId = id;
var col7 = "col7-"+clientId;
var col7value = $("#"+col7).is(':checked');
var data = id+"\n"+col7+"\n"+col7value;
alert(data);
//Read checkbox state
if (col7value =='false'){
contacted = 'N';
} else {
contacted = 'Y';
}
$.ajax({
type: "POST",
url: "_backend/_core/_database/update_Phonebank.php",
data: {
"id": clientId,
"contacted": contacted
},
dataType: "text",
success: function(data){
}
})
}
Ich freue mich, wenn Sie mir helfen können, zu entscheiden, dass meine Funktion nicht das zweite Mal gelesen wird.
Versuchen Sie, eine [MCVE]. Es ist schwer zu sehen, was in deinem Beispiel vor sich geht. Ist das PHP relevant? Können Sie keine reduzierte HTML-Version bereitstellen? – Quentin
Wenn eine Antwort Ihr Problem gelöst hat, ziehen Sie in Betracht, die Antwort zu akzeptieren. Hier ist, wie http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work dann hier zurückkehren und das gleiche mit dem Häkchen/Häkchen, bis es grün wird. Dies informiert die Community, eine Lösung wurde gefunden. Sonst denken andere vielleicht, dass die Frage noch offen ist und möchten vielleicht (mehr) Antworten posten. Sie erhalten Punkte und andere werden ermutigt, Ihnen zu helfen. * Willkommen bei Stack! * –