2016-10-03 3 views
6

enter image description hereWie kann ich JobId senden und Werte an Ansicht anhängen. Dieses Ajax

ist die lotal Auflistung Abrufen aus der Datenbank r_job Tisch .. Wenn ich Ansicht Schaltfläche Details klicken sie hat den Job Wert zu übernehmen Seite durch Ajax an der Steuerung und dort werde ich die Auftragsinformationen abrufen und In responsense muss ich jobbezogene Tabellenfelder senden und auf dieser Seite anzeigen lassen.

Das ist mein Dynamische Listing:

$Jobquery = $conn->query("SELECT * FROM r_job "); 
while($JobResults = $Jobquery->fetch_assoc()){ 

<tr> 
    <td id="hiringevent"><?php echo $JobResults['hiringevent']; ?></td> 
    <td id="JobId"><?php echo $JobResults['id_job']; ?></td> 
    <td><button id="ViewDetails" class="btn btn-primary text-center">View Details</button></td> 
</tr> 

Und das ist meine Ajax und jquery Call:

$("#ViewDetails").click(function() { 
    $.ajax({ 
      url: "job-controller.php", 
      method: "POST", 
      data: {'action':'viewjob','JobId' : + $('#JobId').html()}, 
      dataType: "json", 
      success: function (response) { 
       $("#showMessage").html(response['message']); 
      }, 
      error: function (request, status, error) { 
       $("#showMessage").html("OOPS! Something Went Wrong Please Try After Sometime!"); 
      } 
     }); 
     return false; 
    }); 

Schließlich mein Controller Seite:

if($_POST['action']=='viewjob'){ 
     $jobSearch= $conn->query("SELECT * From r_job WHERE id_job='".$_POST['JobId']."'") or die(mysql_error()); 
     $ViewJob=$jobSearch->fetch_assoc(); 
     $hiringevent  = $ViewJob['hiringevent']; 
     $jobname   = $ViewJob['jobname']; 
     $jobdescription  = $ViewJob['jobdescription']; 
     $cutoff    = $ViewJob['cutoff']; 
     $joblocation  = $ViewJob['joblocation']; 
     $interviewlocation = $ViewJob['interviewlocation']; 
     $jobexperience  = $ViewJob['jobexperience']; 
      $response['message'] = "Show Job Information"; 
      $response['success'] = true; 
      }else{ 
      $response['message'] = "OOPS! Something Went Wrong Please Try After Sometime!"; 
      $response['success'] = false; 
     } 
     echo json_encode($response); 
     exit; 
    } 

Meine aktuelle Ausgabe ist, wenn ich auf Ansichtsdetails nur erste Ansicht Detailsklicketaste funktioniert verbleibend keine antwort

Antwort

2

Hinweis, es sollte eine einzelne ID pro Seite geben. Alles, was Sie tun müssen, ist, erstellen Sie eine js-Funktion und rufen Sie sie auf, wenn Sie auf klicken und die JobId als Parameter senden. das funktioniert gut, wenn Sie in Loop sind.

HTML

$Jobquery = $conn->query("SELECT * FROM r_job "); 
while($JobResults = $Jobquery->fetch_assoc()){ 

<tr> 
    <td id="hiringevent"><?php echo $JobResults['hiringevent']; ?></td> 
    <td id="JobId"><?php echo $JobResults['id_job']; ?></td> 
    <td><button class="btn btn-primary text-center" onClick="getDetails(<?php echo $JobResults['id_job']; ?>)">View Details</button></td> 
</tr> 
} 

JS

function getDetails(jobID){ 
// ajax Call Here 
console.log(jobID)// you can see JobID Here. 
// now set the values to by using id 
$("#ViewJobId").val(response['jobData']['jobId']); 
/* val is used to set aswell as get the values */ 



    /*in case of td you have to use text insted of val*/ 
    $("#ViewJobId").text(response['jobData']['jobId']); 

} 
1

Sie haben Probleme mit der Anzeige in Ihrem Code.

1. ids kann nur einmal in einer HTML-Seite

HTML-IDs eindeutig sind verwendet werden und nur einmal auf einer Seite verwendet werden kann. das ist dein erster Design-Fehler, du musst Klassen anstelle von IDs verwenden, wenn du HTML innerhalb einer PHP Schleife erzeugst.

2. die ID von Ajax muss gesendet an abzuhängen, wo Sie

klicken Sie derzeit immer die gleiche ID an Ihrem Controller zu senden, weil $('#JobId').html() unabhängig ist die erste #JobId ‚s html zurück. Sie müssen herausfinden, auf welche Schaltfläche Ihr Benutzer geklickt hat, um zwischen Ihren IDs unterscheiden zu können.

1. Schritt - Ersetzen Sie die ID durch Klassen in Ihrem HTML für alle Elemente, die mehrfach gerendert werden. Ich habe auch ein data-id Attribut auf Ihre Schaltfläche, auf diese Weise ist es sehr einfach ist, um herauszufinden, welche Schaltfläche geklickt wurde:

<tr> 
    <td class="hiringevent"><?php echo $JobResults['hiringevent']; ?></td> 
    <td class="JobId"><?php echo $JobResults['id_job']; ?></td> 
    <td><button class="ViewDetails" class="btn btn-primary text-center" data-id="<?php echo $JobResults['id_job']; ?>">View Details</button></td> 
</tr> 

2. Schritt - in Ihrer Ajax-Anforderung: Finden Sie heraus, welche Taste tatsächlich durch die angeklickt wurde Benutzer - ich die Daten-Attribut hier bin mit:

// ... 
data: {'action':'viewjob','JobId' : $(this).data('id')}, 
// ... 

Erklärung: $(this) in jquery immer auf dem aktuellen Element bezieht, die das Ereignis ausgelöst hat. In Ihrem Fall ist es das Klick-Ereignis, das durch Ihre Schaltfläche ausgelöst wurde - also liest $(this).data('id') das Daten-Attribut "id" im HTML-Code Ihrer Schaltfläche.

Verwandte Themen